#include <FastLED.h>
#define NUM_LEDS 4
#define BUTTON_1 34
#define BUTTON_2 35
#define DATA_PIN 15
#define CLOCK_PIN 13
CRGB leds[NUM_LEDS];
volatile uint8_t counter = 0;
volatile uint8_t led_mode = 0;
void led_increment(){
led_mode = 0;
counter++;
if(counter == 16) counter = 0;
}
void color_increment(){
led_mode = 1;
}
void setup() {
// put your setup code here, to run once:
// Serial.begin(115200);
// Serial.println("Hello, ESP32!");
//pinMode(LED_BUILTIN, OUTPUT);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
pinMode(BUTTON_1, INPUT_PULLUP);
pinMode(BUTTON_2, INPUT_PULLUP);
attachInterrupt(BUTTON_1, color_increment, FALLING);
attachInterrupt(BUTTON_2, led_increment, FALLING);
Serial.begin(9600);
}
void loop() {
if(led_mode == 0){
leds[0] = CRGB(255*((counter & 0x01) >> 0), 0, 0);
leds[1] = CRGB(255*((counter & 0x02) >> 1), 0, 0);
leds[2] = CRGB(255*((counter & 0x04) >> 2), 0, 0);
leds[3] = CRGB(255*((counter & 0x08) >> 3), 0, 0);
delay(10);
} else {
leds[0] = CRGB::SkyBlue;
leds[1] = CRGB::OrangeRed;
leds[2] = CRGB::Green;
leds[3] = CRGB::Red;
}
FastLED.show();
}