From e6fc8e8af4ff8bd2709eb4485ba1ba9beadd27a5 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Fri, 26 Nov 2021 22:19:07 +0100 Subject: first animation done - added variable length animations - added readme to software subdirectory - implemented first animation --- software/software.ino | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'software/software.ino') 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(); -- cgit v1.2.3