Subversion Repositories Code-Repo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
226 Kevin 1
#include "defines.h"
2
#include "ANIMATIONS.h"
3
#include "CUBE.h"
4
 
231 Kevin 5
void Animation_Solid_Colors(uint8_t iterations, uint16_t delay_ms) {
6
    uint8_t i;
226 Kevin 7
    for (i = 0; i < iterations; i++) {
8
        Cube_Set_All(RED);
9
        Delay_MS(delay_ms);
10
        Cube_Set_All(GREEN);
11
        Delay_MS(delay_ms);
12
        Cube_Set_All(BLUE);
13
        Delay_MS(delay_ms);
14
    }
15
}
16
 
231 Kevin 17
void Animation_Layer_Alternate(uint8_t iterations, uint16_t delay_ms) {
18
    uint8_t i,z;
226 Kevin 19
    for (z = 0; z < iterations; z++) {
20
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
21
            if (i % 3 == 0)
22
                Cube_Set_Layer(i,RED);
23
            else if (i % 3 == 1)
24
                Cube_Set_Layer(i,GREEN);
25
            else
26
                Cube_Set_Layer(i,BLUE);
27
        }
28
        Delay_MS(delay_ms);
29
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
30
            if (i % 3 == 0)
31
                Cube_Set_Layer(i,GREEN);
32
            else if (i % 3 == 1)
33
                Cube_Set_Layer(i,BLUE);
34
            else
35
                Cube_Set_Layer(i,RED);
36
        }
37
        Delay_MS(delay_ms);
38
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
39
            if (i % 3 == 0)
40
                Cube_Set_Layer(i,BLUE);
41
            else if (i % 3 == 1)
42
                Cube_Set_Layer(i,RED);
43
            else
44
                Cube_Set_Layer(i,GREEN);
45
        }
46
        Delay_MS(delay_ms);
47
    }
48
}
49
 
231 Kevin 50
void Animation_Pixel_Alternate(uint8_t iterations, uint16_t delay_ms) {
51
    uint8_t i,j,k,z;
226 Kevin 52
    for (z = 0; z < iterations; z++) {
53
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
54
            Cube_Clear();
55
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
56
                for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
231 Kevin 57
                    int32_t var = (j * 8) + k;
226 Kevin 58
                    if (var % 3 == 0)
59
                        Cube_Set_Pixel(i,j,k,RED);
60
                    else if (var % 3 == 1)
61
                        Cube_Set_Pixel(i,j,k,GREEN);
62
                    else
63
                        Cube_Set_Pixel(i,j,k,BLUE);
64
                }
65
            }
66
            Delay_MS(delay_ms);
67
            Cube_Clear();
68
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
69
                for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
231 Kevin 70
                    int32_t var = (j * 8) + k;
226 Kevin 71
                    if (var % 3 == 0)
72
                        Cube_Set_Pixel(i,j,k,GREEN);
73
                    else if (var % 3 == 1)
74
                        Cube_Set_Pixel(i,j,k,BLUE);
75
                    else
76
                        Cube_Set_Pixel(i,j,k,RED);
77
                }
78
            }
79
            Delay_MS(delay_ms);
80
            Cube_Clear();
81
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
82
                for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
231 Kevin 83
                    int32_t var = (j * 8) + k;
226 Kevin 84
                    if (var % 3 == 0)
85
                        Cube_Set_Pixel(i,j,k,BLUE);
86
                    else if (var % 3 == 1)
87
                        Cube_Set_Pixel(i,j,k,RED);
88
                    else
89
                        Cube_Set_Pixel(i,j,k,GREEN);
90
                }
91
            }
92
            Delay_MS(delay_ms);
93
        }
94
    }
95
}
96
 
231 Kevin 97
void Animation_Full_Color_Sweep(uint8_t iterations, uint16_t delay_us) {
98
    int16_t i,z;
226 Kevin 99
    for (z = 0; z < iterations; z++) {
100
        for (i = 0; i < 0x0FF; i+=2) {
101
            Cube_Set_All(i,0,0);
102
            Delay_US(delay_us);
103
        }
104
        for (i = 0; i < 0x0FF; i+=2) {
105
            Cube_Set_All(0x0FF,i,0);
106
            Delay_US(delay_us);
107
        }
108
        for (i = 0x0FF; i >= 0; i-=2) {
109
            Cube_Set_All(i,0x0FF,0);
110
            Delay_US(delay_us);
111
        }
112
        for (i = 0; i < 0x0FF; i+=2) {
113
            Cube_Set_All(0,0x0FF,i);
114
            Delay_US(delay_us);
115
        }
116
        for (i = 0; i < 0x0FF; i+=2) {
117
            Cube_Set_All(i,0x0FF,0x0FF);
118
            Delay_US(delay_us);
119
        }
120
        for (i = 0x0FF; i >= 0; i-=2) {
121
            Cube_Set_All(0x0FF,i,0x0FF);
122
            Delay_US(delay_us);
123
        }
124
        for (i = 0x0FF; i >= 0; i-=2) {
125
            Cube_Set_All(i,0,0x0FF);
126
            Delay_US(delay_us);
127
        }
231 Kevin 128
        for (i = 0x0FF; i >= 0; i-=2) {
226 Kevin 129
            Cube_Set_All(0,0,i);
130
            Delay_US(delay_us);
131
        }
132
    }
133
}
134
 
231 Kevin 135
void Animation_Row_Column_Sweep(uint8_t iterations, uint16_t delay_ms) {
136
    uint8_t i,j,k,a,z;
226 Kevin 137
    for (z = 0; z < iterations; z++) {
138
        for (i = 0; i < 3; i++) {
139
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
140
                Cube_Clear();
141
                for (k = 0; k < CUBE_COLUMN_COUNT; k++)
142
                    if (i % 3 == 0)
143
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
144
                            Cube_Set_Pixel(a,j,k,RED);
145
                    else if (i % 3 == 1)
146
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
147
                            Cube_Set_Pixel(a,j,k,GREEN);
148
                    else
149
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
150
                            Cube_Set_Pixel(a,j,k,BLUE);
151
                Delay_MS(delay_ms);
152
            }
153
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
154
                Cube_Clear();
155
                for (k = 0; k < CUBE_COLUMN_COUNT; k++)
156
                    if (i % 3 == 0)
157
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
158
                            Cube_Set_Pixel(a,k,j,RED);
159
                    else if (i % 3 == 1)
160
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
161
                            Cube_Set_Pixel(a,k,j,GREEN);
162
                    else
163
                        for (a = 0; a < CUBE_LAYER_COUNT; a++)
164
                            Cube_Set_Pixel(a,k,j,BLUE);
165
                Delay_MS(delay_ms);
166
            }
231 Kevin 167
            for (j = CUBE_LAYER_COUNT; j != 0; j--) {
226 Kevin 168
                Cube_Clear();
169
                if (i % 3 == 0) {
170
                    for (k = 0; k < CUBE_LAYER_COUNT; k++)
171
                        if (k == j)
172
                            Cube_Set_Layer(k,RED);
173
                } else if (i % 3 == 1) {
174
                    for (k = 0; k < CUBE_LAYER_COUNT; k++)
175
                        if (k == j)
176
                            Cube_Set_Layer(k,GREEN);
177
                } else {
178
                    for (k = 0; k < CUBE_LAYER_COUNT; k++)
179
                        if (k == j)
180
                            Cube_Set_Layer(k,BLUE);
181
                }
182
                Delay_MS(delay_ms);
183
            }
184
        }
185
    }
186
}
187
 
231 Kevin 188
void Animation_Pixel_Sweep(uint8_t iterations, uint16_t delay_ms) {
189
    uint8_t i,j,k,z,a;
226 Kevin 190
    for (z = 0; z < iterations; z++) {
191
        for (a = 0; a < 3; a++) {
192
            for (i = 0; i < CUBE_LAYER_COUNT; i++) {
193
                for (j = 0; j < CUBE_ROW_COUNT; j++) {
194
                    for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
195
                        Cube_Clear();
196
                        if (a % 3 == 0) {
197
                            Cube_Set_Pixel(i,j,k,RED);
198
                        } else if (a % 3 == 1) {
199
                            Cube_Set_Pixel(i,j,k,GREEN);
200
                        } else {
201
                            Cube_Set_Pixel(i,j,k,BLUE);
202
                        }
203
                        Delay_MS(delay_ms);
204
                    }
205
                }
206
            }
207
        }
208
    }
209
}
210
 
231 Kevin 211
void Animation_Pseudo_Random_Colors(uint8_t iterations, uint16_t delay_ms) {
212
    uint8_t i,j,k,z;
226 Kevin 213
    for (z = 0; z < iterations; z++) {
214
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
215
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
216
                for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
231 Kevin 217
                    uint32_t a = rand();
226 Kevin 218
                    if (a % 5 == 0)
219
                        Cube_Set_Pixel(i,j,k,RED);
220
                    else if (a % 5 == 1)
221
                        Cube_Set_Pixel(i,j,k,GREEN);
222
                    else if (a % 5 == 2)
223
                        Cube_Set_Pixel(i,j,k,BLUE);
224
                    else if (a % 5 == 3)
225
                        Cube_Set_Pixel(i,j,k,PURPLE);
226
                    else if (a % 5 == 4)
227
                        Cube_Set_Pixel(i,j,k,YELLOW);
228
                    else
229
                        Cube_Set_Pixel(i,j,k,ORANGE);
230
                }
231
            }
232
        }
233
        Delay_MS(delay_ms);
234
    }
235
}
236
 
231 Kevin 237
void Animation_Random_Colors(uint8_t iterations, uint16_t delay_ms) {
238
    uint8_t i,j,k,z;
226 Kevin 239
    for (z = 0; z < iterations; z++) {
240
        for (i = 0; i < CUBE_LAYER_COUNT; i++) {
241
            for (j = 0; j < CUBE_ROW_COUNT; j++) {
242
                for (k = 0; k < CUBE_COLUMN_COUNT; k++) {
243
                    Cube_Set_Pixel(i,j,k,rand()&0x0FF,rand()&0x0FF,rand()&0x0FF);
244
                }
245
            }
246
        }
247
        Delay_MS(delay_ms);
248
    }
249
}
250
 
231 Kevin 251
void Animation_Cube_In_Cube(uint8_t iterations, uint16_t delay_ms) {
252
    uint8_t z,x,i,j,k;
226 Kevin 253
    for (z = 0; z < iterations; z++) {
254
        for (x = 0; x < 5; x++) {
255
            Cube_Clear();
256
            for (i = 0; i < CUBE_LAYER_COUNT; i++) {
257
                if ((x == 0 || x == 4)&&(i == 0 || i == 7)) {
258
                    Cube_Set_Layer(i,RED);
259
                } else if ((x == 1 || x == 4)&&(i == 1 || i == 6)) {
260
                    for (j = 1; j < CUBE_ROW_COUNT-1; j++)
261
                        for (k = 1; k < CUBE_COLUMN_COUNT-1; k++)
262
                            Cube_Set_Pixel(i,j,k,YELLOW);
263
                } else if ((x == 2 || x == 4)&&(i == 2 || i == 5)) {
264
                    for (j = 2; j < CUBE_ROW_COUNT-2; j++)
265
                        for (k = 2; k < CUBE_COLUMN_COUNT-2; k++)
266
                            Cube_Set_Pixel(i,j,k,GREEN);
267
                } else if ((x == 3 || x == 4)&&(i == 3 || i == 4)) {
268
                    for (j = 3; j < CUBE_ROW_COUNT-3; j++)
269
                        for (k = 3; k < CUBE_COLUMN_COUNT-3; k++)
270
                            Cube_Set_Pixel(i,j,k,BLUE);
271
                }
272
 
273
                if ((x == 0 || x == 4)&&(i > 0 && i < 8)) {
274
                    for (j = 0; j < 8; j++) {
275
                        Cube_Set_Pixel(i,j,0,RED);
276
                        Cube_Set_Pixel(i,j,7,RED);
277
                        Cube_Set_Pixel(i,0,j,RED);
278
                        Cube_Set_Pixel(i,7,j,RED);
279
                    }
280
                }
281
                if ((x == 1 || x == 4)&&(i > 1 && i < 7)) {
282
                    for (j = 1; j < 7; j++) {
283
                        Cube_Set_Pixel(i,j,1,YELLOW);
284
                        Cube_Set_Pixel(i,j,6,YELLOW);
285
                        Cube_Set_Pixel(i,1,j,YELLOW);
286
                        Cube_Set_Pixel(i,6,j,YELLOW);
287
                    }
288
                }
289
                if ((x == 2 || x == 4)&&(i > 2 && i < 6)) {
290
                    for (j = 2; j < 6; j++) {
291
                        Cube_Set_Pixel(i,j,2,GREEN);
292
                        Cube_Set_Pixel(i,j,5,GREEN);
293
                        Cube_Set_Pixel(i,2,j,GREEN);
294
                        Cube_Set_Pixel(i,5,j,GREEN);
295
                    }
296
                }
297
            }
298
            Delay_MS(delay_ms);
299
        }
300
    }
301
}
302
 
231 Kevin 303
void Animation_Double_Rotation(uint8_t iterations, uint16_t delay_ms) {
226 Kevin 304
    Cube_Clear();
231 Kevin 305
    uint8_t i,x,y,z;
226 Kevin 306
    for (z = 0; z < 3; z++) {
307
        switch (z % 3) {
308
            case 0:
309
                for (y = 0; y < CUBE_LAYER_COUNT; y++) {
310
                    Cube_Set_Pixel(y,0,0,RED);
311
                    Cube_Set_Pixel(y,1,1,RED);
312
                    Cube_Set_Pixel(y,2,2,RED);
313
                    Cube_Set_Pixel(y,3,3,RED);
314
                    Cube_Set_Pixel(y,4,4,RED);
315
                    Cube_Set_Pixel(y,5,5,RED);
316
                    Cube_Set_Pixel(y,6,6,RED);
317
                    Cube_Set_Pixel(y,7,7,RED);
318
                }
319
                break;
320
            case 1:
321
                for (y = 0; y < CUBE_LAYER_COUNT; y++) {
322
                    Cube_Set_Pixel(y,0,0,GREEN);
323
                    Cube_Set_Pixel(y,1,1,GREEN);
324
                    Cube_Set_Pixel(y,2,2,GREEN);
325
                    Cube_Set_Pixel(y,3,3,GREEN);
326
                    Cube_Set_Pixel(y,4,4,GREEN);
327
                    Cube_Set_Pixel(y,5,5,GREEN);
328
                    Cube_Set_Pixel(y,6,6,GREEN);
329
                    Cube_Set_Pixel(y,7,7,GREEN);
330
                }
331
                break;
332
            case 2:
333
                for (y = 0; y < CUBE_LAYER_COUNT; y++) {
334
                    Cube_Set_Pixel(y,0,0,BLUE);
335
                    Cube_Set_Pixel(y,1,1,BLUE);
336
                    Cube_Set_Pixel(y,2,2,BLUE);
337
                    Cube_Set_Pixel(y,3,3,BLUE);
338
                    Cube_Set_Pixel(y,4,4,BLUE);
339
                    Cube_Set_Pixel(y,5,5,BLUE);
340
                    Cube_Set_Pixel(y,6,6,BLUE);
341
                    Cube_Set_Pixel(y,7,7,BLUE);
342
                }
343
                break;
344
        }
345
 
346
        for (i = 0; i < iterations; i++) {
347
            for (x = 0; x < 28; x++) {
348
                Delay_MS(delay_ms);
349
                Cube_Rotate(0);
350
            }
351
        }
352
    }
353
}