 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);

    // Check if button is still low after debounce.
    buttonNewState = digitalRead(BUTTON_PIN);
    if (buttonNewState == LOW) {
      animationIndex++;
      if (animationIndex >= (sizeof(animations) / sizeof(NeoPixelAnimation *))) {
        animationIndex = 0;        
      }
      animations[animationIndex]->reset();
    }
  }
  buttonPreviousState = buttonNewState;
}



#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);
