--- /dev/null
+#ifndef BAREBUTTON_H
+#define BAREBUTTON_H
+
+class BareButton {
+private:
+ uint8_t _pin;
+public:
+ BareButton(uint8_t pin) {
+ _pin = pin;
+ pinMode(_pin, INPUT_PULLUP);
+ }
+
+ boolean isPressed() {
+ return !digitalRead(_pin); // pin low -> pressed
+ }
+};
+
+#endif // BAREBUTTON_H
--- /dev/null
+#include <FastLED.h>
+#include <FastLED_animation.h>
+
+#include "BareButton.h"
+
+//#include "animations/Adafruit.h"
+//#include "animations/Debian.h"
+//#include "animations/Firefox.h"
+#include "animations/JMPrope.h"
+//#include "animations/Openhardware.h"
+//#include "animations/Opensource.h"
+//#include "animations/S.S.C.Napoli.h"
+//#include "animations/ao2.h"
+//#include "animations/ao2it.h"
+
+#define DATA_PIN 0
+#define INPUT_PIN 2
+
+/* This is the same exposure time to set up on the camera */
+#define EXPOSURE_TIME_MSEC 500UL
+
+static struct CRGB leds[NUM_LEDS];
+
+static BareButton button = BareButton(INPUT_PIN);
+static unsigned long frame_delay_usecs = EXPOSURE_TIME_MSEC * 1000UL / NUM_FRAMES;
+
+void setup()
+{
+ LEDS.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
+}
+
+void loop()
+{
+ unsigned long remaining;
+ unsigned long elapsed = 0;
+
+ if (button.isPressed()) {
+ unsigned long t0 = micros();
+ animation.draw(leds);
+ elapsed = micros() - t0;
+ } else {
+ for (int i = 0; i < NUM_LEDS; i++)
+ leds[i] = CRGB(0, 0, 0);
+ LEDS.show();
+ animation.reset();
+ }
+ remaining = frame_delay_usecs - elapsed;
+#if 0
+ /* use leds to show how many _milliseconds_ we will have to wait to
+ * achieve a constant framerate */
+ for (unsigned int i = 0; i < NUM_LEDS; i++)
+ leds[i] = CRGB(0, 0, 0);
+ for (unsigned int i = 0; i < remaining / 1000; i++)
+ leds[i] = CRGB(255, 0, 0);
+ LEDS.show();
+ delay(100);
+#else
+ delayMicroseconds(remaining);
+#endif
+}
--- /dev/null
+The MIT License (MIT)
+
+Copyright (c) 2013 Blinkinlabs, LLC
+Copyright (C) 2014 Antonio Ospite <ao2@ao2.it>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null
+ARDUINO_VAR_PATH := $(HOME)/sketchbook/hardware/attiny/variants
+BOARDS_TXT := $(HOME)/sketchbook/hardware/attiny/boards.txt
+BOARD_TAG := trinket3
+ISP_PROG := usbtiny
+AVRDUDE_OPTS = -q
+
+ARDUINO_LIBS = FastLED FastLED_animation
+
+-include $(HOME)/.arduino/Arduino.mk.inc
+include /usr/share/arduino/Arduino.mk
+
+upload: $(TARGET_HEX) verify_size
+ $(MAKE) ispload
--- /dev/null
+Animate a LED strip for Light Painting with a JMPrope.
+
+Inpired by Blinknlabs PatternPlayer:
+https://github.com/Blinkinlabs/BlinkyTape_Arduino/tree/master/examples/PatternPlayer
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 1,
+// Color table section. Each entry is 3 bytes. length: 6 bytes
+ 238, 76, 132,
+ 0, 0, 0,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 17, 0,
+ 13, 1,
+ 15, 0,
+ 15, 1,
+ 13, 0,
+ 17, 1,
+ 13, 0,
+ 17, 1,
+ 15, 0,
+ 15, 1,
+ 17, 0,
+ 13, 1,
+ 19, 0,
+ 11, 1,
+ 20, 0,
+ 10, 1,
+ 2, 0,
+ 2, 1,
+ 17, 0,
+ 9, 1,
+ 1, 0,
+ 5, 1,
+ 17, 0,
+ 7, 1,
+ 1, 0,
+ 7, 1,
+ 17, 0,
+ 5, 1,
+ 1, 0,
+ 8, 1,
+ 19, 0,
+ 2, 1,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 8, 1,
+ 19, 0,
+ 2, 1,
+ 1, 0,
+ 7, 1,
+ 17, 0,
+ 5, 1,
+ 1, 0,
+ 5, 1,
+ 17, 0,
+ 7, 1,
+ 2, 0,
+ 1, 1,
+ 18, 0,
+ 9, 1,
+ 20, 0,
+ 10, 1,
+ 19, 0,
+ 11, 1,
+ 17, 0,
+ 13, 1,
+ 15, 0,
+ 15, 1,
+ 13, 0,
+ 17, 1,
+ 13, 0,
+ 17, 1,
+ 15, 0,
+ 15, 1,
+ 17, 0,
+ 13, 1,
+ 18, 0,
+ 12, 1,
+ 20, 0,
+ 10, 1,
+ 2, 0,
+ 2, 1,
+ 17, 0,
+ 9, 1,
+ 1, 0,
+ 5, 1,
+ 17, 0,
+ 7, 1,
+ 1, 0,
+ 6, 1,
+ 18, 0,
+ 5, 1,
+ 1, 0,
+ 8, 1,
+ 19, 0,
+ 2, 1,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 8, 1,
+ 19, 0,
+ 2, 1,
+ 1, 0,
+ 7, 1,
+ 17, 0,
+ 5, 1,
+ 1, 0,
+ 5, 1,
+ 17, 0,
+ 7, 1,
+ 2, 0,
+ 2, 1,
+ 17, 0,
+ 9, 1,
+ 20, 0,
+ 10, 1,
+ 19, 0,
+ 11, 1,
+ 17, 0,
+ 13, 1,
+ 16, 0,
+ 14, 1,
+ 13, 0,
+ 17, 1,
+ 12, 0,
+ 18, 1,
+ 15, 0,
+ 15, 1,
+ 17, 0,
+ 13, 1,
+ 18, 0,
+ 12, 1,
+ 20, 0,
+ 10, 1,
+ 21, 0,
+ 9, 1,
+ 1, 0,
+ 5, 1,
+ 16, 0,
+ 8, 1,
+ 1, 0,
+ 6, 1,
+ 17, 0,
+ 6, 1,
+ 1, 0,
+ 8, 1,
+ 18, 0,
+ 3, 1,
+ 1, 0,
+ 9, 1,
+ 19, 0,
+ 1, 1,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 8, 1,
+ 20, 0,
+ 1, 1,
+ 1, 0,
+ 7, 1,
+ 19, 0,
+ 3, 1,
+ 1, 0,
+ 5, 1,
+ 18, 0,
+ 6, 1,
+ 2, 0,
+ 3, 1,
+ 17, 0,
+ 8, 1,
+ 20, 0,
+ 10, 1,
+ 19, 0,
+ 11, 1,
+ 17, 0,
+ 13, 1,
+ 16, 0,
+ 14, 1,
+ 14, 0,
+ 16, 1,
+ 12, 0,
+ 18, 1,
+ 15, 0,
+ 15, 1,
+ 17, 0,
+ 13, 1,
+ 18, 0,
+ 12, 1,
+ 19, 0,
+ 11, 1,
+ 21, 0,
+ 9, 1,
+ 1, 0,
+ 5, 1,
+ 16, 0,
+ 8, 1,
+ 1, 0,
+ 6, 1,
+ 17, 0,
+ 6, 1,
+ 1, 0,
+ 7, 1,
+ 19, 0,
+ 3, 1,
+ 1, 0,
+ 8, 1,
+ 20, 0,
+ 1, 1,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 8, 1,
+ 20, 0,
+ 1, 1,
+ 1, 0,
+ 7, 1,
+ 19, 0,
+ 3, 1,
+ 1, 0,
+ 6, 1,
+ 17, 0,
+ 6, 1,
+ 2, 0,
+ 3, 1,
+ 17, 0,
+ 8, 1,
+ 20, 0,
+ 10, 1,
+ 19, 0,
+ 11, 1,
+ 18, 0,
+ 12, 1,
+ 16, 0,
+ 14, 1,
+ 14, 0,
+ 16, 1,
+ 12, 0,
+ 18, 1,
+ 14, 0,
+ 16, 1,
+ 16, 0,
+ 14, 1,
+ 18, 0,
+ 12, 1,
+ 19, 0,
+ 11, 1,
+ 21, 0,
+ 9, 1,
+ 2, 0,
+ 3, 1,
+ 17, 0,
+ 8, 1,
+ 1, 0,
+ 6, 1,
+ 18, 0,
+ 5, 1,
+ 1, 0,
+ 7, 1,
+ 20, 0,
+ 2, 1,
+ 1, 0,
+ 8, 1,
+ 21, 0,
+ 1, 0,
+ 9, 1,
+ 20, 0,
+ 1, 0,
+ 8, 1,
+ 20, 0,
+ 1, 1,
+ 1, 0,
+ 7, 1,
+ 18, 0,
+ 4, 1,
+ 1, 0,
+ 6, 1,
+ 17, 0,
+ 6, 1,
+ 2, 0,
+ 3, 1,
+ 17, 0,
+ 8, 1,
+ 20, 0,
+ 10, 1,
+ 19, 0,
+ 11, 1,
+ 18, 0,
+ 12, 1,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 1,
+// Color table section. Each entry is 3 bytes. length: 6 bytes
+ 213, 7, 78,
+ 0, 1, 0,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 3, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 23, 1,
+ 3, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 21, 1,
+ 1, 0,
+ 1, 1,
+ 3, 1,
+ 2, 0,
+ 22, 1,
+ 2, 0,
+ 1, 1,
+ 2, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 20, 1,
+ 2, 0,
+ 2, 1,
+ 2, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 20, 1,
+ 2, 0,
+ 2, 1,
+ 2, 1,
+ 2, 0,
+ 21, 1,
+ 3, 0,
+ 2, 1,
+ 2, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 18, 1,
+ 3, 0,
+ 3, 1,
+ 2, 1,
+ 2, 0,
+ 20, 1,
+ 3, 0,
+ 3, 1,
+ 2, 1,
+ 2, 0,
+ 19, 1,
+ 3, 0,
+ 4, 1,
+ 2, 1,
+ 2, 0,
+ 19, 1,
+ 3, 0,
+ 4, 1,
+ 2, 1,
+ 1, 0,
+ 19, 1,
+ 3, 0,
+ 5, 1,
+ 2, 1,
+ 1, 0,
+ 19, 1,
+ 3, 0,
+ 5, 1,
+ 1, 1,
+ 2, 0,
+ 18, 1,
+ 4, 0,
+ 5, 1,
+ 1, 1,
+ 2, 0,
+ 2, 1,
+ 1, 0,
+ 14, 1,
+ 4, 0,
+ 6, 1,
+ 1, 1,
+ 2, 0,
+ 2, 1,
+ 1, 0,
+ 14, 1,
+ 4, 0,
+ 6, 1,
+ 1, 1,
+ 2, 0,
+ 2, 1,
+ 1, 0,
+ 14, 1,
+ 4, 0,
+ 6, 1,
+ 1, 1,
+ 2, 0,
+ 2, 1,
+ 1, 0,
+ 13, 1,
+ 5, 0,
+ 6, 1,
+ 1, 1,
+ 2, 0,
+ 2, 1,
+ 1, 0,
+ 13, 1,
+ 5, 0,
+ 6, 1,
+ 1, 1,
+ 2, 0,
+ 17, 1,
+ 3, 0,
+ 7, 1,
+ 1, 1,
+ 2, 0,
+ 17, 1,
+ 3, 0,
+ 7, 1,
+ 1, 1,
+ 2, 0,
+ 17, 1,
+ 3, 0,
+ 7, 1,
+ 1, 1,
+ 2, 0,
+ 17, 1,
+ 3, 0,
+ 7, 1,
+ 1, 1,
+ 2, 0,
+ 16, 1,
+ 4, 0,
+ 7, 1,
+ 1, 1,
+ 3, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 3, 0,
+ 7, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 4, 0,
+ 6, 1,
+ 2, 1,
+ 2, 0,
+ 16, 1,
+ 4, 0,
+ 6, 1,
+ 2, 1,
+ 3, 0,
+ 16, 1,
+ 3, 0,
+ 6, 1,
+ 2, 1,
+ 3, 0,
+ 15, 1,
+ 4, 0,
+ 6, 1,
+ 3, 1,
+ 2, 0,
+ 15, 1,
+ 5, 0,
+ 5, 1,
+ 3, 1,
+ 2, 0,
+ 16, 1,
+ 4, 0,
+ 5, 1,
+ 3, 1,
+ 3, 0,
+ 15, 1,
+ 4, 0,
+ 5, 1,
+ 4, 1,
+ 2, 0,
+ 15, 1,
+ 4, 0,
+ 5, 1,
+ 4, 1,
+ 2, 0,
+ 15, 1,
+ 4, 0,
+ 5, 1,
+ 4, 1,
+ 2, 0,
+ 15, 1,
+ 5, 0,
+ 4, 1,
+ 5, 1,
+ 1, 0,
+ 15, 1,
+ 5, 0,
+ 4, 1,
+ 5, 1,
+ 2, 0,
+ 14, 1,
+ 6, 0,
+ 3, 1,
+ 5, 1,
+ 2, 0,
+ 14, 1,
+ 6, 0,
+ 3, 1,
+ 6, 1,
+ 2, 0,
+ 13, 1,
+ 6, 0,
+ 3, 1,
+ 6, 1,
+ 2, 0,
+ 14, 1,
+ 5, 0,
+ 3, 1,
+ 7, 1,
+ 1, 0,
+ 14, 1,
+ 6, 0,
+ 2, 1,
+ 7, 1,
+ 2, 0,
+ 13, 1,
+ 6, 0,
+ 2, 1,
+ 8, 1,
+ 1, 0,
+ 13, 1,
+ 6, 0,
+ 2, 1,
+ 8, 1,
+ 2, 0,
+ 12, 1,
+ 7, 0,
+ 1, 1,
+ 9, 1,
+ 1, 0,
+ 13, 1,
+ 6, 0,
+ 1, 1,
+ 9, 1,
+ 2, 0,
+ 12, 1,
+ 6, 0,
+ 1, 1,
+ 10, 1,
+ 1, 0,
+ 12, 1,
+ 5, 0,
+ 2, 1,
+ 10, 1,
+ 2, 0,
+ 11, 1,
+ 5, 0,
+ 2, 1,
+ 10, 1,
+ 2, 0,
+ 11, 1,
+ 5, 0,
+ 2, 1,
+ 11, 1,
+ 1, 0,
+ 12, 1,
+ 5, 0,
+ 1, 1,
+ 11, 1,
+ 2, 0,
+ 11, 1,
+ 5, 0,
+ 1, 1,
+ 12, 1,
+ 1, 0,
+ 11, 1,
+ 4, 0,
+ 2, 1,
+ 12, 1,
+ 1, 0,
+ 11, 1,
+ 4, 0,
+ 2, 1,
+ 12, 1,
+ 1, 0,
+ 11, 1,
+ 5, 0,
+ 1, 1,
+ 12, 1,
+ 1, 0,
+ 11, 1,
+ 5, 0,
+ 1, 1,
+ 23, 1,
+ 6, 0,
+ 1, 1,
+ 23, 1,
+ 6, 0,
+ 1, 1,
+ 23, 1,
+ 6, 0,
+ 1, 1,
+ 22, 1,
+ 7, 0,
+ 1, 1,
+ 22, 1,
+ 7, 0,
+ 1, 1,
+ 22, 1,
+ 6, 0,
+ 2, 1,
+ 21, 1,
+ 7, 0,
+ 2, 1,
+ 21, 1,
+ 3, 0,
+ 2, 1,
+ 1, 0,
+ 3, 1,
+ 20, 1,
+ 5, 0,
+ 5, 1,
+ 20, 1,
+ 3, 0,
+ 7, 1,
+ 11, 1,
+ 1, 0,
+ 7, 1,
+ 4, 0,
+ 7, 1,
+ 19, 1,
+ 4, 0,
+ 7, 1,
+ 18, 1,
+ 5, 0,
+ 7, 1,
+ 18, 1,
+ 4, 0,
+ 8, 1,
+ 18, 1,
+ 3, 0,
+ 9, 1,
+ 17, 1,
+ 3, 0,
+ 10, 1,
+ 17, 1,
+ 2, 0,
+ 11, 1,
+ 15, 1,
+ 4, 0,
+ 11, 1,
+ 15, 1,
+ 3, 0,
+ 12, 1,
+ 15, 1,
+ 2, 0,
+ 13, 1,
+ 14, 1,
+ 3, 0,
+ 13, 1,
+ 4, 1,
+ 1, 0,
+ 8, 1,
+ 3, 0,
+ 14, 1,
+ 3, 1,
+ 2, 0,
+ 8, 1,
+ 2, 0,
+ 15, 1,
+ 12, 1,
+ 3, 0,
+ 15, 1,
+ 11, 1,
+ 3, 0,
+ 16, 1,
+ 11, 1,
+ 2, 0,
+ 17, 1,
+ 10, 1,
+ 3, 0,
+ 17, 1,
+ 9, 1,
+ 3, 0,
+ 18, 1,
+ 9, 1,
+ 2, 0,
+ 19, 1,
+ 8, 1,
+ 3, 0,
+ 19, 1,
+ 8, 1,
+ 2, 0,
+ 20, 1,
+ 7, 1,
+ 3, 0,
+ 20, 1,
+ 7, 1,
+ 2, 0,
+ 21, 1,
+ 6, 1,
+ 3, 0,
+ 1, 1,
+ 1, 0,
+ 19, 1,
+ 6, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 20, 1,
+ 5, 1,
+ 3, 0,
+ 1, 1,
+ 1, 0,
+ 20, 1,
+ 5, 1,
+ 2, 0,
+ 23, 1,
+ 5, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 21, 1,
+ 4, 1,
+ 3, 0,
+ 23, 1,
+ 4, 1,
+ 2, 0,
+ 1, 1,
+ 1, 0,
+ 22, 1,
+ 4, 1,
+ 3, 0,
+ 23, 1,
+ 3, 1,
+ 4, 0,
+ 22, 1,
+ 1, 0,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 5,
+// Color table section. Each entry is 3 bytes. length: 18 bytes
+ 0, 255, 255,
+ 22, 0, 255,
+ 255, 0, 0,
+ 0, 0, 0,
+ 255, 255, 1,
+ 255, 255, 255,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 2, 1,
+ 1, 3,
+ 3, 4,
+ 3, 2,
+ 5, 3,
+ 14, 2,
+ 2, 3,
+ 2, 1,
+ 1, 3,
+ 3, 4,
+ 3, 2,
+ 4, 3,
+ 15, 2,
+ 2, 3,
+ 2, 1,
+ 1, 3,
+ 3, 4,
+ 3, 2,
+ 3, 3,
+ 15, 2,
+ 3, 3,
+ 2, 1,
+ 1, 3,
+ 3, 4,
+ 3, 2,
+ 3, 3,
+ 16, 2,
+ 2, 3,
+ 2, 1,
+ 1, 3,
+ 2, 4,
+ 5, 2,
+ 2, 3,
+ 16, 2,
+ 2, 3,
+ 2, 1,
+ 2, 3,
+ 1, 4,
+ 5, 2,
+ 2, 3,
+ 16, 2,
+ 2, 3,
+ 2, 1,
+ 2, 3,
+ 1, 4,
+ 5, 2,
+ 2, 3,
+ 15, 2,
+ 3, 3,
+ 3, 1,
+ 1, 3,
+ 1, 4,
+ 6, 2,
+ 1, 3,
+ 15, 2,
+ 3, 3,
+ 3, 1,
+ 1, 3,
+ 1, 4,
+ 22, 2,
+ 3, 3,
+ 3, 1,
+ 2, 3,
+ 22, 2,
+ 3, 3,
+ 3, 1,
+ 2, 3,
+ 22, 2,
+ 3, 3,
+ 3, 1,
+ 2, 3,
+ 22, 2,
+ 3, 3,
+ 3, 1,
+ 3, 3,
+ 21, 2,
+ 3, 3,
+ 4, 1,
+ 2, 3,
+ 21, 2,
+ 3, 3,
+ 4, 1,
+ 2, 3,
+ 21, 2,
+ 3, 3,
+ 4, 1,
+ 2, 3,
+ 21, 2,
+ 3, 3,
+ 5, 1,
+ 1, 3,
+ 21, 2,
+ 3, 3,
+ 5, 1,
+ 2, 3,
+ 20, 2,
+ 3, 3,
+ 6, 1,
+ 1, 3,
+ 20, 2,
+ 3, 3,
+ 6, 1,
+ 1, 3,
+ 19, 2,
+ 4, 3,
+ 7, 1,
+ 1, 3,
+ 18, 2,
+ 4, 3,
+ 8, 1,
+ 18, 2,
+ 4, 3,
+ 8, 1,
+ 18, 2,
+ 4, 3,
+ 8, 1,
+ 19, 2,
+ 3, 3,
+ 8, 1,
+ 18, 2,
+ 4, 3,
+ 8, 1,
+ 18, 2,
+ 4, 3,
+ 7, 1,
+ 1, 3,
+ 18, 2,
+ 4, 3,
+ 7, 1,
+ 1, 3,
+ 19, 2,
+ 3, 3,
+ 4, 1,
+ 1, 3,
+ 2, 1,
+ 1, 2,
+ 1, 4,
+ 17, 2,
+ 4, 3,
+ 4, 1,
+ 6, 4,
+ 16, 2,
+ 4, 3,
+ 4, 1,
+ 6, 4,
+ 16, 2,
+ 4, 3,
+ 4, 1,
+ 7, 4,
+ 15, 2,
+ 4, 3,
+ 5, 1,
+ 7, 4,
+ 14, 2,
+ 4, 3,
+ 5, 1,
+ 8, 4,
+ 13, 2,
+ 4, 3,
+ 5, 1,
+ 9, 4,
+ 13, 2,
+ 3, 3,
+ 6, 1,
+ 9, 4,
+ 13, 2,
+ 2, 3,
+ 6, 1,
+ 1, 2,
+ 10, 4,
+ 12, 2,
+ 1, 3,
+ 6, 1,
+ 2, 2,
+ 9, 4,
+ 6, 2,
+ 2, 0,
+ 2, 3,
+ 1, 2,
+ 1, 4,
+ 1, 3,
+ 6, 1,
+ 1, 2,
+ 1, 4,
+ 2, 2,
+ 9, 4,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 5, 3,
+ 5, 1,
+ 1, 4,
+ 1, 2,
+ 1, 4,
+ 3, 2,
+ 9, 4,
+ 2, 1,
+ 3, 0,
+ 5, 3,
+ 5, 1,
+ 1, 4,
+ 2, 5,
+ 4, 2,
+ 7, 4,
+ 1, 0,
+ 1, 1,
+ 4, 0,
+ 5, 3,
+ 5, 1,
+ 1, 4,
+ 2, 5,
+ 5, 2,
+ 6, 4,
+ 7, 0,
+ 4, 3,
+ 5, 1,
+ 1, 4,
+ 1, 5,
+ 6, 2,
+ 1, 0,
+ 5, 4,
+ 6, 0,
+ 1, 5,
+ 4, 3,
+ 5, 1,
+ 2, 5,
+ 4, 2,
+ 4, 0,
+ 4, 4,
+ 6, 0,
+ 1, 5,
+ 4, 3,
+ 5, 1,
+ 2, 5,
+ 3, 2,
+ 1, 4,
+ 5, 0,
+ 3, 4,
+ 6, 0,
+ 1, 5,
+ 4, 3,
+ 6, 1,
+ 1, 5,
+ 3, 2,
+ 7, 0,
+ 2, 4,
+ 6, 0,
+ 1, 5,
+ 4, 3,
+ 6, 1,
+ 1, 5,
+ 2, 2,
+ 1, 4,
+ 8, 0,
+ 1, 4,
+ 6, 0,
+ 1, 5,
+ 4, 3,
+ 6, 1,
+ 1, 5,
+ 2, 2,
+ 1, 4,
+ 15, 0,
+ 1, 5,
+ 4, 3,
+ 6, 1,
+ 1, 5,
+ 2, 2,
+ 1, 4,
+ 15, 0,
+ 1, 5,
+ 4, 3,
+ 7, 1,
+ 1, 2,
+ 2, 3,
+ 15, 0,
+ 1, 5,
+ 4, 3,
+ 7, 1,
+ 3, 3,
+ 16, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 6, 1,
+ 20, 0,
+ 4, 3,
+ 7, 1,
+ 17, 0,
+ 1, 5,
+ 1, 0,
+ 4, 3,
+ 7, 1,
+ 17, 0,
+ 1, 5,
+ 1, 0,
+ 4, 3,
+ 8, 1,
+ 16, 0,
+ 1, 5,
+ 1, 0,
+ 4, 3,
+ 9, 1,
+ 1, 0,
+ 1, 1,
+ 12, 0,
+ 1, 1,
+ 2, 5,
+ 1, 0,
+ 3, 3,
+ 12, 1,
+ 6, 0,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 2, 5,
+ 1, 0,
+ 3, 3,
+ 12, 1,
+ 6, 0,
+ 3, 1,
+ 1, 5,
+ 1, 1,
+ 3, 5,
+ 1, 0,
+ 1, 4,
+ 2, 3,
+ 21, 1,
+ 1, 5,
+ 1, 1,
+ 2, 4,
+ 1, 5,
+ 1, 0,
+ 1, 4,
+ 2, 3,
+ 19, 1,
+ 2, 0,
+ 2, 5,
+ 2, 4,
+ 1, 5,
+ 1, 0,
+ 1, 4,
+ 2, 3,
+ 20, 1,
+ 3, 5,
+ 1, 4,
+ 2, 5,
+ 1, 0,
+ 1, 2,
+ 2, 3,
+ 20, 1,
+ 3, 5,
+ 1, 4,
+ 3, 5,
+ 1, 2,
+ 1, 4,
+ 1, 3,
+ 20, 1,
+ 3, 5,
+ 1, 4,
+ 3, 5,
+ 1, 4,
+ 2, 3,
+ 20, 1,
+ 3, 5,
+ 1, 4,
+ 1, 5,
+ 3, 4,
+ 2, 3,
+ 20, 1,
+ 2, 5,
+ 2, 4,
+ 1, 5,
+ 3, 4,
+ 2, 3,
+ 17, 1,
+ 1, 5,
+ 1, 3,
+ 5, 4,
+ 1, 5,
+ 3, 4,
+ 2, 3,
+ 14, 1,
+ 1, 3,
+ 2, 1,
+ 1, 5,
+ 1, 3,
+ 1, 4,
+ 1, 5,
+ 3, 4,
+ 1, 5,
+ 2, 4,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 12, 1,
+ 3, 3,
+ 1, 1,
+ 3, 5,
+ 1, 4,
+ 1, 5,
+ 2, 4,
+ 2, 5,
+ 2, 4,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 10, 1,
+ 6, 3,
+ 4, 5,
+ 3, 4,
+ 2, 5,
+ 2, 4,
+ 2, 2,
+ 1, 3,
+ 8, 1,
+ 8, 3,
+ 1, 4,
+ 2, 5,
+ 3, 4,
+ 3, 5,
+ 1, 4,
+ 1, 3,
+ 1, 2,
+ 1, 4,
+ 1, 3,
+ 6, 1,
+ 10, 3,
+ 6, 4,
+ 1, 5,
+ 3, 4,
+ 1, 3,
+ 1, 2,
+ 1, 4,
+ 1, 3,
+ 4, 1,
+ 1, 3,
+ 1, 1,
+ 10, 3,
+ 12, 4,
+ 2, 3,
+ 4, 1,
+ 1, 3,
+ 1, 1,
+ 11, 3,
+ 2, 4,
+ 1, 5,
+ 8, 4,
+ 2, 3,
+ 4, 1,
+ 1, 3,
+ 1, 1,
+ 11, 3,
+ 11, 4,
+ 2, 3,
+ 4, 1,
+ 1, 3,
+ 1, 1,
+ 11, 3,
+ 10, 4,
+ 1, 2,
+ 2, 3,
+ 7, 1,
+ 9, 3,
+ 10, 4,
+ 2, 2,
+ 2, 3,
+ 6, 1,
+ 10, 3,
+ 2, 4,
+ 1, 2,
+ 7, 4,
+ 1, 2,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 6, 1,
+ 10, 3,
+ 2, 4,
+ 1, 2,
+ 7, 4,
+ 1, 2,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 5, 1,
+ 11, 3,
+ 7, 4,
+ 4, 2,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 5, 1,
+ 11, 3,
+ 7, 4,
+ 3, 2,
+ 1, 3,
+ 2, 2,
+ 1, 3,
+ 4, 1,
+ 13, 3,
+ 4, 4,
+ 8, 2,
+ 1, 3,
+ 4, 1,
+ 1, 3,
+ 3, 4,
+ 9, 3,
+ 3, 4,
+ 9, 2,
+ 1, 3,
+ 4, 1,
+ 4, 4,
+ 9, 3,
+ 3, 4,
+ 8, 2,
+ 2, 3,
+ 3, 1,
+ 5, 4,
+ 7, 3,
+ 3, 2,
+ 3, 4,
+ 7, 2,
+ 2, 3,
+ 3, 1,
+ 5, 4,
+ 7, 3,
+ 3, 2,
+ 2, 4,
+ 9, 2,
+ 1, 3,
+ 3, 1,
+ 4, 4,
+ 8, 3,
+ 3, 2,
+ 1, 4,
+ 8, 2,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 3, 1,
+ 3, 4,
+ 1, 2,
+ 9, 3,
+ 11, 2,
+ 1, 3,
+ 1, 2,
+ 1, 3,
+ 2, 1,
+ 4, 4,
+ 1, 2,
+ 8, 3,
+ 14, 2,
+ 1, 3,
+ 2, 1,
+ 4, 4,
+ 1, 2,
+ 8, 3,
+ 14, 2,
+ 1, 3,
+ 2, 1,
+ 4, 4,
+ 1, 2,
+ 8, 3,
+ 13, 2,
+ 2, 3,
+ 2, 1,
+ 4, 4,
+ 1, 2,
+ 8, 3,
+ 13, 2,
+ 2, 3,
+ 2, 1,
+ 3, 4,
+ 3, 2,
+ 6, 3,
+ 14, 2,
+ 2, 3,
+ 2, 1,
+ 4, 4,
+ 2, 2,
+ 6, 3,
+ 14, 2,
+ 2, 3,
+ 2, 1,
+ 4, 4,
+ 2, 2,
+ 6, 3,
+ 14, 2,
+ 2, 3,
+ 2, 1,
+ 1, 3,
+ 3, 4,
+ 2, 2,
+ 6, 3,
+ 14, 2,
+ 2, 3,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 8,
+// Color table section. Each entry is 3 bytes. length: 27 bytes
+ 255, 255, 0,
+ 0, 255, 255,
+ 0, 255, 0,
+ 0, 0, 255,
+ 5, 252, 5,
+ 255, 0, 0,
+ 255, 0, 255,
+ 0, 0, 0,
+ 255, 255, 255,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 28, 7,
+ 2, 5,
+ 13, 7,
+ 5, 8,
+ 10, 7,
+ 2, 5,
+ 12, 7,
+ 7, 8,
+ 9, 7,
+ 2, 5,
+ 12, 7,
+ 2, 8,
+ 3, 7,
+ 2, 8,
+ 9, 7,
+ 2, 5,
+ 12, 7,
+ 2, 8,
+ 4, 7,
+ 2, 8,
+ 8, 7,
+ 2, 5,
+ 12, 7,
+ 2, 8,
+ 3, 7,
+ 2, 8,
+ 9, 7,
+ 2, 5,
+ 12, 7,
+ 7, 8,
+ 9, 7,
+ 2, 5,
+ 13, 7,
+ 5, 8,
+ 10, 7,
+ 2, 5,
+ 28, 7,
+ 2, 5,
+ 12, 7,
+ 3, 8,
+ 13, 7,
+ 2, 5,
+ 12, 7,
+ 2, 8,
+ 14, 7,
+ 2, 0,
+ 12, 7,
+ 2, 8,
+ 14, 7,
+ 2, 0,
+ 13, 7,
+ 7, 8,
+ 8, 7,
+ 2, 0,
+ 13, 7,
+ 7, 8,
+ 8, 7,
+ 2, 0,
+ 12, 7,
+ 2, 8,
+ 14, 7,
+ 2, 0,
+ 12, 7,
+ 1, 8,
+ 15, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 0,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 10, 7,
+ 3, 5,
+ 15, 7,
+ 2, 2,
+ 9, 7,
+ 2, 5,
+ 17, 7,
+ 2, 2,
+ 8, 7,
+ 2, 5,
+ 18, 7,
+ 2, 2,
+ 8, 7,
+ 2, 5,
+ 18, 7,
+ 2, 2,
+ 8, 7,
+ 3, 5,
+ 17, 7,
+ 2, 2,
+ 9, 7,
+ 11, 5,
+ 8, 7,
+ 2, 2,
+ 10, 7,
+ 10, 5,
+ 8, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 2,
+ 28, 7,
+ 2, 1,
+ 10, 7,
+ 2, 2,
+ 16, 7,
+ 2, 1,
+ 10, 7,
+ 5, 2,
+ 13, 7,
+ 2, 1,
+ 11, 7,
+ 7, 2,
+ 10, 7,
+ 2, 1,
+ 14, 7,
+ 6, 2,
+ 8, 7,
+ 2, 1,
+ 13, 7,
+ 6, 2,
+ 9, 7,
+ 2, 1,
+ 12, 7,
+ 5, 2,
+ 11, 7,
+ 2, 1,
+ 10, 7,
+ 1, 4,
+ 3, 2,
+ 14, 7,
+ 2, 1,
+ 9, 7,
+ 1, 4,
+ 3, 2,
+ 15, 7,
+ 2, 1,
+ 10, 7,
+ 1, 4,
+ 3, 2,
+ 14, 7,
+ 2, 1,
+ 12, 7,
+ 5, 2,
+ 11, 7,
+ 2, 1,
+ 13, 7,
+ 6, 2,
+ 9, 7,
+ 2, 1,
+ 14, 7,
+ 6, 2,
+ 8, 7,
+ 2, 1,
+ 11, 7,
+ 7, 2,
+ 10, 7,
+ 2, 1,
+ 10, 7,
+ 5, 2,
+ 13, 7,
+ 2, 1,
+ 10, 7,
+ 2, 2,
+ 16, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 8, 7,
+ 10, 3,
+ 10, 7,
+ 2, 3,
+ 8, 7,
+ 11, 3,
+ 9, 7,
+ 2, 3,
+ 12, 7,
+ 2, 3,
+ 3, 7,
+ 2, 3,
+ 9, 7,
+ 2, 3,
+ 12, 7,
+ 2, 3,
+ 3, 7,
+ 2, 3,
+ 9, 7,
+ 2, 3,
+ 12, 7,
+ 2, 3,
+ 3, 7,
+ 2, 3,
+ 9, 7,
+ 2, 3,
+ 12, 7,
+ 7, 3,
+ 9, 7,
+ 2, 3,
+ 13, 7,
+ 5, 3,
+ 10, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 3,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 28, 7,
+ 2, 6,
+ 13, 7,
+ 3, 8,
+ 2, 7,
+ 1, 8,
+ 9, 7,
+ 2, 6,
+ 12, 7,
+ 4, 8,
+ 2, 7,
+ 1, 8,
+ 9, 7,
+ 2, 6,
+ 12, 7,
+ 1, 8,
+ 2, 7,
+ 1, 8,
+ 2, 7,
+ 2, 8,
+ 8, 7,
+ 2, 6,
+ 12, 7,
+ 1, 8,
+ 2, 7,
+ 1, 8,
+ 2, 7,
+ 1, 8,
+ 9, 7,
+ 2, 6,
+ 12, 7,
+ 7, 8,
+ 9, 7,
+ 2, 5,
+ 13, 7,
+ 5, 8,
+ 10, 7,
+ 2, 5,
+ 28, 7,
+ 2, 5,
+ 28, 7,
+ 2, 5,
+ 13, 7,
+ 5, 8,
+ 10, 7,
+ 2, 5,
+ 13, 7,
+ 6, 8,
+ 9, 7,
+ 2, 5,
+ 13, 7,
+ 1, 8,
+ 3, 7,
+ 2, 8,
+ 9, 7,
+ 2, 5,
+ 13, 7,
+ 1, 8,
+ 4, 7,
+ 1, 8,
+ 9, 7,
+ 2, 5,
+ 13, 7,
+ 9, 8,
+ 6, 7,
+ 2, 5,
+ 12, 7,
+ 10, 8,
+ 6, 7,
+ 2, 5,
+ 12, 7,
+ 2, 8,
+ 14, 7,
+ 2, 5,
+ 28, 7,
+ 2, 5,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 1,
+// Color table section. Each entry is 3 bytes. length: 6 bytes
+ 0, 0, 0,
+ 78, 218, 241,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 23, 1,
+ 7, 0,
+ 20, 1,
+ 3, 0,
+ 7, 0,
+ 17, 1,
+ 6, 0,
+ 7, 0,
+ 15, 1,
+ 8, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 2,
+// Color table section. Each entry is 3 bytes. length: 9 bytes
+ 0, 0, 0,
+ 76, 255, 124,
+ 24, 127, 50,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 8, 0,
+ 22, 2,
+ 8, 0,
+ 22, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 2, 2,
+ 18, 1,
+ 2, 2,
+ 8, 0,
+ 22, 2,
+ 8, 0,
+ 22, 2,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+ 30, 0,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 3,
+// Color table section. Each entry is 3 bytes. length: 12 bytes
+ 48, 169, 255,
+ 0, 0, 0,
+ 255, 255, 255,
+ 0, 60, 231,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 1, 2,
+ 1, 1,
+ 19, 0,
+ 1, 2,
+ 8, 3,
+ 2, 1,
+ 19, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 20, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 20, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 20, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 10, 0,
+ 1, 1,
+ 9, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 3, 1,
+ 9, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 8, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 8, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 9, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 8, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 9, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 1, 1,
+ 4, 2,
+ 1, 1,
+ 6, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 1, 1,
+ 5, 2,
+ 1, 1,
+ 5, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 8, 0,
+ 1, 1,
+ 6, 2,
+ 1, 1,
+ 4, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 3, 2,
+ 3, 1,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 2, 1,
+ 4, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 10, 0,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 3, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 7, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 2, 0,
+ 9, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 8, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 5, 3,
+ 2, 0,
+ 1, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 3, 3,
+ 4, 0,
+ 1, 3,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 1, 3,
+ 6, 0,
+ 1, 3,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 1, 2,
+ 2, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 1, 2,
+ 2, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 2, 2,
+ 2, 1,
+ 2, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 3, 2,
+ 1, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 10, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 3, 2,
+ 3, 1,
+ 1, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 10, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 5, 2,
+ 4, 1,
+ 2, 2,
+ 1, 1,
+ 9, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 7, 2,
+ 2, 1,
+ 2, 2,
+ 6, 1,
+ 4, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 16, 2,
+ 2, 1,
+ 3, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 15, 2,
+ 1, 1,
+ 5, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 14, 2,
+ 1, 1,
+ 6, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 14, 2,
+ 1, 1,
+ 6, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 13, 2,
+ 1, 1,
+ 7, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 12, 2,
+ 1, 1,
+ 8, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 12, 2,
+ 1, 1,
+ 8, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 10, 2,
+ 2, 1,
+ 9, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 8, 2,
+ 2, 1,
+ 11, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 7, 2,
+ 2, 1,
+ 12, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 6, 2,
+ 1, 1,
+ 14, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 5, 2,
+ 1, 1,
+ 15, 3,
+ 1, 2,
+ 7, 0,
+ 1, 3,
+ 4, 2,
+ 2, 1,
+ 15, 3,
+ 1, 2,
+ 1, 3,
+ 6, 0,
+ 1, 3,
+ 4, 2,
+ 1, 1,
+ 1, 0,
+ 15, 3,
+ 1, 2,
+ 3, 3,
+ 4, 0,
+ 1, 3,
+ 4, 2,
+ 1, 1,
+ 1, 0,
+ 15, 3,
+ 1, 2,
+ 4, 3,
+ 3, 0,
+ 1, 3,
+ 3, 2,
+ 1, 1,
+ 3, 0,
+ 14, 3,
+ 1, 2,
+ 6, 3,
+ 1, 0,
+ 1, 3,
+ 3, 2,
+ 1, 1,
+ 4, 0,
+ 13, 3,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 4, 0,
+ 13, 3,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 6, 0,
+ 11, 3,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 6, 0,
+ 3, 1,
+ 9, 3,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 8, 3,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 4, 0,
+ 4, 3,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 7, 0,
+ 1, 1,
+ 3, 2,
+ 1, 1,
+ 6, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 5, 2,
+ 1, 1,
+ 5, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 6, 0,
+ 1, 1,
+ 6, 2,
+ 1, 1,
+ 4, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 3, 2,
+ 3, 1,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 5, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 2, 1,
+ 4, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 10, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 10, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 4, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 3, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 2, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 2, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 2, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 1, 1,
+ 2, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 4, 2,
+ 1, 1,
+ 1, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 4, 2,
+ 1, 1,
+ 1, 0,
+ 1, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 4, 2,
+ 3, 1,
+ 1, 2,
+ 1, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 5, 2,
+ 2, 1,
+ 2, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 6, 2,
+ 1, 1,
+ 2, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 9, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 9, 2,
+ 1, 1,
+ 11, 0,
+ 1, 2,
+ 8, 3,
+ 10, 2,
+ 1, 1,
+ 10, 0,
+ 1, 2,
+ 8, 3,
+ 10, 2,
+ 1, 1,
+ 10, 0,
+ 1, 2,
+ 8, 3,
+ 11, 2,
+ 1, 1,
+ 9, 0,
+ 1, 2,
+ 8, 3,
+ 12, 2,
+ 1, 1,
+ 8, 0,
+ 1, 2,
+ 8, 3,
+ 12, 2,
+ 2, 1,
+ 7, 0,
+ 1, 2,
+ 8, 3,
+ 13, 2,
+ 2, 1,
+ 6, 0,
+ 1, 2,
+ 8, 3,
+ 14, 2,
+ 1, 1,
+ 6, 0,
+ 1, 2,
+ 8, 3,
+ 13, 2,
+ 1, 1,
+ 7, 0,
+ 1, 2,
+ 8, 3,
+ 8, 2,
+ 5, 1,
+ 8, 0,
+ 1, 2,
+ 8, 3,
+ 5, 2,
+ 4, 1,
+ 12, 0,
+ 1, 2,
+ 8, 3,
+ 4, 2,
+ 2, 1,
+ 15, 0,
+ 1, 2,
+ 8, 3,
+ 3, 2,
+ 2, 1,
+ 16, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 2, 1,
+ 17, 0,
+ 1, 2,
+ 8, 3,
+ 2, 2,
+ 1, 1,
+ 18, 0,
+ 1, 2,
+ 8, 3,
+ 1, 2,
+ 2, 1,
+ 18, 0,
+ 1, 2,
+ 8, 3,
+ 1, 2,
+ 1, 1,
+ 19, 0,
+ 1, 2,
+ 8, 3,
+ 1, 2,
+ 1, 1,
+ 19, 0,
+ 1, 2,
+ 8, 3,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 2,
+// Color table section. Each entry is 3 bytes. length: 9 bytes
+ 0, 89, 128,
+ 230, 230, 230,
+ 0, 128, 203,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 7, 2,
+ 23, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 24, 0,
+ 6, 2,
+ 9, 0,
+ 5, 1,
+ 10, 0,
+ 6, 2,
+ 8, 0,
+ 9, 1,
+ 7, 0,
+ 6, 2,
+ 9, 0,
+ 9, 1,
+ 6, 0,
+ 6, 2,
+ 8, 0,
+ 10, 1,
+ 6, 0,
+ 6, 2,
+ 6, 0,
+ 12, 1,
+ 6, 0,
+ 6, 2,
+ 7, 0,
+ 11, 1,
+ 6, 0,
+ 6, 2,
+ 8, 0,
+ 10, 1,
+ 6, 0,
+ 6, 2,
+ 7, 0,
+ 11, 1,
+ 6, 0,
+ 6, 2,
+ 6, 0,
+ 12, 1,
+ 6, 0,
+ 6, 2,
+ 6, 0,
+ 12, 1,
+ 6, 0,
+ 7, 2,
+ 6, 0,
+ 11, 1,
+ 6, 0,
+ 7, 2,
+ 5, 0,
+ 12, 1,
+ 6, 0,
+ 7, 2,
+ 5, 0,
+ 12, 1,
+ 6, 0,
+ 8, 2,
+ 5, 0,
+ 11, 1,
+ 6, 0,
+ 8, 2,
+ 5, 0,
+ 11, 1,
+ 6, 0,
+ 9, 2,
+ 3, 0,
+ 12, 1,
+ 6, 0,
+ 9, 2,
+ 3, 0,
+ 12, 1,
+ 6, 0,
+ 10, 2,
+ 3, 0,
+ 11, 1,
+ 6, 0,
+ 10, 2,
+ 3, 0,
+ 11, 1,
+ 6, 0,
+ 11, 2,
+ 3, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 3, 0,
+ 9, 1,
+ 6, 0,
+ 12, 2,
+ 2, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 1, 0,
+ 11, 1,
+ 6, 0,
+ 12, 2,
+ 1, 0,
+ 11, 1,
+ 6, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 6, 0,
+ 14, 2,
+ 2, 0,
+ 8, 1,
+ 6, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 6, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 3, 0,
+ 9, 1,
+ 6, 0,
+ 15, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 2, 2,
+ 3, 0,
+ 13, 2,
+ 1, 0,
+ 1, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 3, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 2, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 2, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 2, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 5, 0,
+ 4, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 18, 2,
+ 1, 0,
+ 5, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 17, 2,
+ 1, 0,
+ 6, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 17, 2,
+ 1, 0,
+ 6, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 4, 0,
+ 5, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 3, 1,
+ 1, 2,
+ 1, 0,
+ 17, 2,
+ 1, 0,
+ 6, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 17, 2,
+ 2, 0,
+ 5, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 17, 2,
+ 1, 0,
+ 6, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 3, 0,
+ 5, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 2, 0,
+ 6, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 16, 2,
+ 1, 0,
+ 7, 1,
+ 1, 0,
+ 4, 1,
+ 1, 0,
+ 15, 2,
+ 2, 0,
+ 7, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 1, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 4, 0,
+ 6, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 1, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 15, 2,
+ 1, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 1, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 1, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 14, 2,
+ 2, 0,
+ 8, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 12, 2,
+ 1, 0,
+ 11, 1,
+ 1, 0,
+ 4, 2,
+ 1, 0,
+ 12, 2,
+ 2, 0,
+ 10, 1,
+ 1, 0,
+ 3, 2,
+ 2, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 6, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 1, 0,
+ 11, 1,
+ 6, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 6, 0,
+ 13, 2,
+ 1, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 2, 0,
+ 10, 1,
+ 6, 0,
+ 12, 2,
+ 1, 0,
+ 11, 1,
+ 6, 0,
+ 13, 2,
+ 2, 0,
+ 9, 1,
+ 6, 0,
+ 12, 2,
+ 3, 0,
+ 9, 1,
+ 6, 0,
+ 11, 2,
+ 3, 0,
+ 10, 1,
+ 6, 0,
+ 11, 2,
+ 3, 0,
+ 9, 1,
+ 7, 0,
+ 10, 2,
+ 6, 0,
+ 4, 1,
+ 10, 0,
+ 9, 2,
+ 21, 0,
+ 9, 2,
+ 21, 0,
+ 8, 2,
+ 22, 0,
+ 8, 2,
+ 22, 0,
+ 7, 2,
+ 23, 0,
+ 7, 2,
+ 23, 0,
+ 7, 2,
+ 23, 0,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+const PROGMEM prog_uint8_t animationData[] = {
+// Length of the color table - 1, in bytes. length: 1 byte
+ 2,
+// Color table section. Each entry is 3 bytes. length: 9 bytes
+ 22, 101, 151,
+ 0, 0, 0,
+ 120, 175, 205,
+// Pixel runs section. Each pixel run is 2 bytes. length: -1 bytes
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 14, 1,
+ 3, 2,
+ 2, 1,
+ 2, 2,
+ 8, 1,
+ 1, 0,
+ 13, 1,
+ 5, 2,
+ 2, 1,
+ 2, 2,
+ 7, 1,
+ 1, 0,
+ 13, 1,
+ 2, 2,
+ 2, 1,
+ 1, 2,
+ 2, 1,
+ 2, 2,
+ 7, 1,
+ 1, 0,
+ 13, 1,
+ 2, 2,
+ 2, 1,
+ 1, 2,
+ 2, 1,
+ 2, 2,
+ 7, 1,
+ 1, 0,
+ 13, 1,
+ 8, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 6, 2,
+ 9, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 16, 1,
+ 2, 2,
+ 11, 1,
+ 1, 0,
+ 14, 1,
+ 6, 2,
+ 9, 1,
+ 1, 0,
+ 13, 1,
+ 3, 2,
+ 2, 1,
+ 3, 2,
+ 8, 1,
+ 1, 0,
+ 13, 1,
+ 1, 2,
+ 6, 1,
+ 1, 2,
+ 8, 1,
+ 1, 0,
+ 13, 1,
+ 1, 2,
+ 6, 1,
+ 1, 2,
+ 8, 1,
+ 1, 0,
+ 13, 1,
+ 3, 2,
+ 2, 1,
+ 3, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 6, 2,
+ 9, 1,
+ 1, 0,
+ 16, 1,
+ 2, 2,
+ 11, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 14, 1,
+ 2, 2,
+ 2, 1,
+ 2, 2,
+ 9, 1,
+ 1, 0,
+ 14, 1,
+ 2, 2,
+ 3, 1,
+ 2, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 3, 2,
+ 3, 1,
+ 2, 2,
+ 7, 1,
+ 1, 0,
+ 14, 1,
+ 4, 2,
+ 2, 1,
+ 2, 2,
+ 7, 1,
+ 1, 0,
+ 14, 1,
+ 2, 2,
+ 1, 1,
+ 4, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 2, 2,
+ 2, 1,
+ 2, 2,
+ 9, 1,
+ 1, 0,
+ 14, 1,
+ 2, 2,
+ 13, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 13, 1,
+ 3, 2,
+ 13, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 14, 1,
+ 7, 2,
+ 1, 1,
+ 2, 2,
+ 5, 1,
+ 1, 0,
+ 14, 1,
+ 7, 2,
+ 1, 1,
+ 2, 2,
+ 5, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 20, 1,
+ 1, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 9, 2,
+ 6, 1,
+ 1, 0,
+ 14, 1,
+ 9, 2,
+ 6, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 5, 1,
+ 1, 2,
+ 8, 1,
+ 1, 0,
+ 14, 1,
+ 1, 2,
+ 14, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+ 29, 1,
+ 1, 0,
+};
+
+#define NUM_FRAMES 101
+#define NUM_LEDS 30
+Animation animation(NUM_FRAMES, animationData, NUM_LEDS);
--- /dev/null
+#!/bin/sh
+#
+# gphoto2_capture.sh - Do automated high exposure tethered photo shoots
+#
+# Copyright (C) 2014 Antonio Ospite <ao2@ao2.it>
+#
+# This program is free software. It comes without any warranty, to
+# the extent permitted by applicable law. You can redistribute it
+# and/or modify it under the terms of the Do What The Fuck You Want
+# To Public License, Version 2, as published by Sam Hocevar. See
+# http://sam.zoy.org/wtfpl/COPYING for more details.
+
+set -e
+
+# Get the configuration variables with these commands:
+# gphoto2 --set-config capture=1
+# gphoto2 --list-all-config | sed -e 's/^[^\/]/\t\0/g' > Camera-config.txt
+#
+
+CAPTURE_MODE=$(LANG=C gphoto2 --get-config capture | grep Current | cut -d ' ' -f 2 | tr -d '\n')
+
+if [ "x$CAPTURE_MODE" = "x" ];
+then
+ exit 1
+fi
+
+if [ $CAPTURE_MODE -eq 0 ];
+then
+ gphoto2 --set-config capture=1
+fi
+
+# The settings below are for a Canon powershot A85, with these settings:
+# - Save pictures on the memory card
+# - F-number 2.8
+# - Manual shooting mode
+# - Exposure 0.5 seconds
+# - Superfine quality
+# - ISO speed 100
+
+gphoto2 \
+ -I 1 \
+ --set-config-index capturetarget=1 \
+ --set-config-index /main/capturesettings/aperture=0 \
+ --set-config-index /main/capturesettings/shootingmode=3 \
+ --set-config-index /main/capturesettings/shutterspeed=15 \
+ --set-config-index /main/imgsettings/imagequality=2 \
+ --set-config-index /main/imgsettings/iso=1 \
+ --capture-image \
+ "$@"
+
+# Stop the capture with Ctrl-C and then download all the files on the PC,
+# after that delete them from the camera:
+# gphoto2 --get-all-files
+# gphoto2 --delete-all-files --recurse