aboutsummaryrefslogtreecommitdiff
path: root/software/software.ino
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2021-11-26 22:19:07 +0100
committerlonkaars <loek@pipeframe.xyz>2021-11-26 22:19:07 +0100
commite6fc8e8af4ff8bd2709eb4485ba1ba9beadd27a5 (patch)
tree9a70bd47b011304b270531a4d0f1e67cc622d8a4 /software/software.ino
parentf9335ba20b0e950e9881749e9bc3006eacefc305 (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.ino21
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();