Skip to content

Commit 63a2790

Browse files
committed
rainbow boot + rainbow idle animation
1 parent 914522f commit 63a2790

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

LCM/Code/App/task.c

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,9 @@ void WS2812_Boot(void)
233233
uint8_t bootAnims[10][3] = {
234234
// Default (blue...green)
235235
//{{10,0,30}, {9,3,27}, {8,6,24}, {7,9,21}, {6,12,18}, {5,15,15}, {4,18,12}, {3,21,9}, {2,24,6}, {1,27,3}},
236-
{25,0,30}, {22,2,27}, {18,4,24}, {15,6,21}, {12,8,18}, {8,10,15}, {6,12,12}, {4,14,9}, {2,16,6}, {0,18,6},
236+
// {25,0,30}, {22,2,27}, {18,4,24}, {15,6,21}, {12,8,18}, {8,10,15}, {6,12,12}, {4,14,9}, {2,16,6}, {0,18,6},
237237
// Rainbow
238-
//{{30,0,0}, {30,15,0}, {30,30,0}, {15,30,0}, {0,30,0}, {0,30,15}, {0,30,30}, {0,15,30}, {0,0,30}, {15,0,30}},
238+
{30,0,0}, {30,15,0}, {30,30,0}, {15,30,0}, {0,30,0}, {0,30,15}, {0,30,30}, {0,15,30}, {0,0,30}, {15,0,30}
239239
// Red White Blue
240240
//{{30,0,0}, {30,30,30}, {0,0,30}, {30,0,0}, {30,30,30}, {0,0,30}, {30,0,0}, {30,30,30}, {0,0,30}, {30,0,0}}
241241
};
@@ -369,6 +369,36 @@ static void WS2818_Knight_Rider(uint8_t brightness) {
369369
frame++;
370370
}
371371

372+
static void WS2812_Rainbow(uint8_t brightness) {
373+
#define ANIMATION_TICK_TIME 6
374+
#define SEGMENT_LENGTH 2
375+
static uint8_t frame = 0;
376+
377+
const uint8_t rainbow[10][3] = {
378+
{30,0,0}, {30,15,0}, {30,30,0}, {15,30,0}, {0,30,0}, {0,30,15}, {0,30,30}, {0,15,30}, {0,0,30}, {15,0,30}
379+
};
380+
381+
if (frame >= ANIMATION_TICK_TIME) {
382+
frame = 0;
383+
static uint8_t offset = 0;
384+
385+
for (uint8_t i = 0; i < NUM_LEDS; i++) {
386+
uint8_t reversed_i = NUM_LEDS - 1 - i;
387+
uint8_t segment = ((reversed_i + offset) / SEGMENT_LENGTH) % 10;
388+
389+
WS2812_Set_Colour(i,
390+
(rainbow[segment][0] * brightness) / 255,
391+
(rainbow[segment][1] * brightness) / 255,
392+
(rainbow[segment][2] * brightness) / 255);
393+
}
394+
395+
offset = (offset + 1) % (10 * SEGMENT_LENGTH);
396+
WS2812_Refresh();
397+
}
398+
399+
frame++;
400+
}
401+
372402
// Idle animation:
373403
static void WS2812_Idle()
374404
{
@@ -382,7 +412,7 @@ static void WS2812_Idle()
382412
}
383413
}
384414
else {
385-
WS2818_Knight_Rider(WS2812_Measure);
415+
WS2812_Rainbow(WS2812_Measure);
386416
}
387417
return;
388418
}

0 commit comments

Comments
 (0)