 
 #define PIN 6
 #define BUTTON_PIN 2
+#define ANIMATION_CYCLE_INTERVAL 30000
 
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN);
 FadeAnimation fadeAnimation(&strip, 150, 150, 255);

  strip.begin();
  strip.setBrightness(20);
  strip.show();
}

void loop() {
  checkButton();
  animations[animationIndex]->nextFrame();
}

TheaterChaseAnimation theaterChaseAnimation(&strip);
RainbowCycleAnimation rainbowCycleAnimation(&strip);
NeoPixelAnimation *animations[] = {&rainbowAnimation, &fadeAnimation, &sparksAnimation, &theaterChaseAnimation, &rainbowCycleAnimation};
byte animationCount = (sizeof(animations) / sizeof(NeoPixelAnimation *));

bool buttonPreviousState = HIGH;
byte animationIndex = 0;
unsigned long timeForNextAnimation = 0;
bool cycleAnimations = true;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
