#include <FastLED.h>
#define NUM_LEDS 15
#define DATA_PIN 6
#define LEFT_BUTTON_PIN 12
#define RIGHT_BUTTON_PIN 11
#define ANIMATION_DELAY 40
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
pinMode(LEFT_BUTTON_PIN, INPUT_PULLUP);
pinMode(RIGHT_BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
if(digitalRead(LEFT_BUTTON_PIN)== LOW){
animateLeft();
} else if (digitalRead(RIGHT_BUTTON_PIN) == LOW) {
animateLeft();
}
else{
fill_solid(leds, NUM_LEDS, CRGB::Red);
FastLED.show();
}
}
void animateLeft() {
fill_solid(leds, NUM_LEDS, CRGB::Black);
fill_solid(&(leds[0]), 1, CRGB::Orange);
FastLED.show();
delay(ANIMATION_DELAY);
fill_solid(&(leds[1]), 2, CRGB::Orange);
FastLED.show();
delay(ANIMATION_DELAY);
for(int i = 0; i < NUM_LEDS - 2; i++){
fill_solid(leds, NUM_LEDS, CRGB::Black);
fill_solid(&(leds[i]), 3, CRGB::OrangeRed);
FastLED.show();
delay(ANIMATION_DELAY);
}
fill_solid(leds, NUM_LEDS, CRGB::Black);
fill_solid(&(leds[NUM_LEDS - 1]), 2, CRGB::Orange);
FastLED.show();
delay(ANIMATION_DELAY);
fill_solid(leds, NUM_LEDS, CRGB::Black);
fill_solid(&(leds[NUM_LEDS - 1]), 1, CRGB::Orange);
FastLED.show();
delay(ANIMATION_DELAY);
fill_solid(leds, NUM_LEDS, CRGB::Black);
FastLED.show();
}