Skip to content

Commit 51d7f42

Browse files
committed
rainbow
1 parent 5e64fdc commit 51d7f42

1 file changed

Lines changed: 35 additions & 4 deletions

File tree

LCM/Code/App/task.c

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,9 @@ void WS2812_Boot(void)
257257
uint8_t bootAnims[10][3] = {
258258
// Default (blue...green)
259259
//{{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}},
260-
{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},
260+
// {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},
261261
// Rainbow
262-
//{{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}},
262+
{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}
263263
// Red White Blue
264264
//{{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}}
265265
};
@@ -386,7 +386,37 @@ static void WS2818_Knight_Rider(uint8_t brightness) {
386386
frame++;
387387
}
388388

389-
#define KR_DELAY_MS 10000
389+
#define KR_DELAY_MS 7000
390+
391+
static void WS2812_Rainbow(uint8_t brightness) {
392+
#define ANIMATION_TICK_TIME 6
393+
#define SEGMENT_LENGTH 2
394+
static uint8_t frame = 0;
395+
396+
const uint8_t rainbow[10][3] = {
397+
{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}
398+
};
399+
400+
if (frame >= ANIMATION_TICK_TIME) {
401+
frame = 0;
402+
static uint8_t offset = 0;
403+
404+
for (uint8_t i = 0; i < NUM_LEDS; i++) {
405+
uint8_t reversed_i = NUM_LEDS - 1 - i;
406+
uint8_t segment = ((reversed_i + offset) / SEGMENT_LENGTH) % 10;
407+
408+
WS2812_Set_Colour(i,
409+
(rainbow[segment][0] * brightness) / 255,
410+
(rainbow[segment][1] * brightness) / 255,
411+
(rainbow[segment][2] * brightness) / 255);
412+
}
413+
414+
offset = (offset + 1) % (10 * SEGMENT_LENGTH);
415+
WS2812_Refresh();
416+
}
417+
418+
frame++;
419+
}
390420

391421
// Idle animation:
392422
static void WS2812_Idle()
@@ -400,7 +430,8 @@ static void WS2812_Idle()
400430

401431
if (Power_Display_Flag > 30) {
402432
// Show KR only above 30% battery
403-
WS2818_Knight_Rider(WS2812_Measure);
433+
// WS2818_Knight_Rider(WS2812_Measure);
434+
WS2812_Rainbow(WS2812_Measure);
404435
return;
405436
}
406437

0 commit comments

Comments
 (0)