diff options
author | lonkaars <loek@pipeframe.xyz> | 2021-11-26 22:19:07 +0100 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2021-11-26 22:19:07 +0100 |
commit | e6fc8e8af4ff8bd2709eb4485ba1ba9beadd27a5 (patch) | |
tree | 9a70bd47b011304b270531a4d0f1e67cc622d8a4 /software/software.ino | |
parent | f9335ba20b0e950e9881749e9bc3006eacefc305 (diff) |
first animation done
- added variable length animations
- added readme to software subdirectory
- implemented first animation
Diffstat (limited to 'software/software.ino')
-rw-r--r-- | software/software.ino | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/software/software.ino b/software/software.ino index 5bf0ac3..ca2b7c0 100644 --- a/software/software.ino +++ b/software/software.ino @@ -6,6 +6,9 @@ unsigned long frame_time_millis; bool led_state[64]; bool scan_enable = true; +#ifndef SLIDESHOW_DURATION +unsigned long slideshow_length_total; +#endif void setup() { pinMode(PINOUT_SER, OUTPUT); @@ -16,15 +19,31 @@ void setup() { Serial.begin(CONFIG_SERIAL_BAUD); #endif + #ifndef SLIDESHOW_DURATION + for(int i = 0; i < SLIDESHOW_SIZE; i++) + slideshow_length_total += slideshow_lengths[i]; + #endif + frame_time_millis = 1000 / CONFIG_FRAMERATE * CONFIG_FRAMERATE; } void loop() { unsigned long current_time = millis(); + #ifdef SLIDESHOW_DURATION unsigned long slide_time = current_time % SLIDESHOW_DURATION; unsigned int slide_index = (current_time / SLIDESHOW_DURATION) % SLIDESHOW_SIZE; - + #else + unsigned long slide_time = current_time % slideshow_length_total; + unsigned int slide_index = 0; + unsigned long slide_sum = 0; + for(int i = 0; i < SLIDESHOW_SIZE; i++) { + slide_sum += slideshow_lengths[i]; + if (slide_time >= slide_sum) continue; + slide_index = i; + break; + } + #endif slideshow_effects[slide_index](slide_time, &led_state); if (scan_enable) scan(); |