Initial import
authorAntonio Ospite <ao2@ao2.it>
Wed, 16 Apr 2014 10:47:26 +0000 (12:47 +0200)
committerAntonio Ospite <ao2@ao2.it>
Wed, 16 Apr 2014 11:08:37 +0000 (13:08 +0200)
16 files changed:
.gitignore [new file with mode: 0644]
BareButton.h [new file with mode: 0644]
JMPRope_player.ino [new file with mode: 0644]
LICENSE [new file with mode: 0644]
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
animations/Adafruit.h [new file with mode: 0644]
animations/Debian.h [new file with mode: 0644]
animations/Firefox.h [new file with mode: 0644]
animations/JMPrope.h [new file with mode: 0644]
animations/Openhardware.h [new file with mode: 0644]
animations/Opensource.h [new file with mode: 0644]
animations/S.S.C.Napoli.h [new file with mode: 0644]
animations/ao2.h [new file with mode: 0644]
animations/ao2it.h [new file with mode: 0644]
contrib/gphoto2_capture.sh [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..dd07bff
--- /dev/null
@@ -0,0 +1 @@
+build-*
diff --git a/BareButton.h b/BareButton.h
new file mode 100644 (file)
index 0000000..2784792
--- /dev/null
@@ -0,0 +1,18 @@
+#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
diff --git a/JMPRope_player.ino b/JMPRope_player.ino
new file mode 100644 (file)
index 0000000..7c48e9b
--- /dev/null
@@ -0,0 +1,60 @@
+#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
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..fb75abf
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+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.
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..4ab100a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+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
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..bc62c50
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+Animate a LED strip for Light Painting with a JMPrope.
+
+Inpired by Blinknlabs PatternPlayer:
+https://github.com/Blinkinlabs/BlinkyTape_Arduino/tree/master/examples/PatternPlayer
diff --git a/animations/Adafruit.h b/animations/Adafruit.h
new file mode 100644 (file)
index 0000000..bae7dcc
--- /dev/null
@@ -0,0 +1,300 @@
+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);
diff --git a/animations/Debian.h b/animations/Debian.h
new file mode 100644 (file)
index 0000000..8640841
--- /dev/null
@@ -0,0 +1,470 @@
+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);
diff --git a/animations/Firefox.h b/animations/Firefox.h
new file mode 100644 (file)
index 0000000..1e5a02b
--- /dev/null
@@ -0,0 +1,629 @@
+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);
diff --git a/animations/JMPrope.h b/animations/JMPrope.h
new file mode 100644 (file)
index 0000000..3204da1
--- /dev/null
@@ -0,0 +1,364 @@
+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);
diff --git a/animations/Openhardware.h b/animations/Openhardware.h
new file mode 100644 (file)
index 0000000..3555634
--- /dev/null
@@ -0,0 +1,256 @@
+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);
diff --git a/animations/Opensource.h b/animations/Opensource.h
new file mode 100644 (file)
index 0000000..c410e8c
--- /dev/null
@@ -0,0 +1,379 @@
+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);
diff --git a/animations/S.S.C.Napoli.h b/animations/S.S.C.Napoli.h
new file mode 100644 (file)
index 0000000..6b8a900
--- /dev/null
@@ -0,0 +1,763 @@
+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);
diff --git a/animations/ao2.h b/animations/ao2.h
new file mode 100644 (file)
index 0000000..f198fef
--- /dev/null
@@ -0,0 +1,484 @@
+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);
diff --git a/animations/ao2it.h b/animations/ao2it.h
new file mode 100644 (file)
index 0000000..eb4822a
--- /dev/null
@@ -0,0 +1,321 @@
+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);
diff --git a/contrib/gphoto2_capture.sh b/contrib/gphoto2_capture.sh
new file mode 100755 (executable)
index 0000000..650c8b2
--- /dev/null
@@ -0,0 +1,54 @@
+#!/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