diff options
| author | user <user@node5.net> | 2024-01-04 22:36:40 +0100 |
|---|---|---|
| committer | user <user@node5.net> | 2024-01-04 22:36:40 +0100 |
| commit | 1478bb504bb93ad7f3b53df69e720e97d4a13939 (patch) | |
| tree | 5da34f4877ae7d62936a010908969ac8dd0ccfc4 /src/main.cpp | |
| parent | e1841adc31423c5f24a9272a0452adc7216c1f80 (diff) | |
make animations more tasteful
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/main.cpp b/src/main.cpp index 4f18fe3..577f643 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -132,7 +132,7 @@ void display_number(int number) { } // Instantly changes. Binary, no fade -void display_symbol(int digit_index, uint8_t symbol) { +void display_symbol(int digit_index, uint8_t symbol, bool clear=true) { // Counts up by bitshifting uint8_t seg_counter = 1; for (int segment_index = 0; segment_index < SEGMENT_COUNT; segment_index++) { @@ -143,23 +143,26 @@ void display_symbol(int digit_index, uint8_t symbol) { if (symbol & seg_counter) { // Turn on LED leds[led_index] = CHSV(hue, SATURATION, max_brightness); - FastLED.show(); + } else if (clear){ + // Turn off LED + leds[led_index] = CRGB::Black; } // Increment segment counter used with bit mask comparison by bitshifting seg_counter = seg_counter<<1; } + + FastLED.show(); } // Change hue of 0-7 segments per frame each digit displays the same -void play_animation(uint8_t *animation, int animation_size, int segment_delay) { +void play_animation(uint8_t *animation, int animation_size, int segment_delay, bool clear=true, int8_t hue_shift=4) { for (int i = 0; i < animation_size; i++){ for (int digit_index = 0; digit_index < 4; digit_index++) { - display_symbol(digit_index, animation[i]); + display_symbol(digit_index, animation[i], clear); } - hue += 16; // Increment HSV hue a lot for rainbow vomit - FastLED.show(); + hue += hue_shift; // Increment HSV hue a lot for rainbow vomit delay(segment_delay); } } @@ -178,8 +181,8 @@ void setup() { FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, LED_COUNT); // GRB ordering is assumed // Turn off all LEDs - FastLED.clear(); - + FastLED.clear(); + Serial.begin(9600); setServer(NTP_SERVER); @@ -192,7 +195,7 @@ void setup() { // Play animation untill connected to WiFi, or animation timeout is reached // Will continue attempting to connect to WiFi if (millis() < WIFI_CONN_ANI_TIMEOUT) { - play_animation(spin_animation, sizeof(spin_animation), 100); + play_animation(spin_animation, sizeof(spin_animation), 100, false); } else { // Turn off all LEDs FastLED.clear(); @@ -203,7 +206,7 @@ void setup() { hue = 0; // Turn off all LEDs - FastLED.clear(); + FastLED.clear(); Serial.println(); Serial.print("Connected, IP address: "); @@ -242,9 +245,12 @@ void loop() { int minutes = CopenhagenTime.dateTime("i").toInt(); // Play animation 5 seconds before hour change - if(minutes == 59 && seconds >= 55) { - play_animation(dual_spin_animation, sizeof(spin_animation), 50); - FastLED.clear(); + if(minutes == 59 && seconds >= 55 && seconds <= 56) { + for (int i = 0; i < 4; i++){ + play_animation(dual_spin_animation, sizeof(dual_spin_animation), 120, true, 0); // No hue shift + } + FastLED.clear(); // Remove animation frame + update_clock(); // Display hour change } // Do nothing untill minute change |
