#include <FastLED.h>
#define BTN_PIN 7
#define LED_PIN 6
#define NUM_LEDS 256
#define NUM_PAL 8
CRGB leds[NUM_LEDS];
CRGBPalette16 pals[NUM_PAL];
int pal = 0;
int btn = HIGH;
void info() {
switch(pal) {
case 0: Serial.println("Cloud Colors");
break;
case 1: Serial.println("Lava Colors");
break;
case 2: Serial.println("Ocean Colors");
break;
case 3: Serial.println("Forest Colors");
break;
case 4: Serial.println("Rainbow Colors");
break;
case 5: Serial.println("Rainbow Stripe Colors");
break;
case 6: Serial.println("Party Colors");
break;
case 7: Serial.println("Heat Colors");
break;
default: Serial.println("Unknown palette");
break;
}
}
void setup() {
Serial.begin(115200);
pinMode(BTN_PIN, INPUT_PULLUP);
pals[0] = CloudColors_p;
pals[1] = LavaColors_p;
pals[2] = OceanColors_p;
pals[3] = ForestColors_p;
pals[4] = RainbowColors_p;
pals[5] = RainbowStripeColors_p;
pals[6] = PartyColors_p;
pals[7] = HeatColors_p;
FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
info();
}
void loop() {
int state = digitalRead(BTN_PIN);
if (btn != state) {
if (state == LOW) {
pal++;
pal = pal >= NUM_PAL ? 0 : pal;
info();
}
}
btn = state;
for(int i = 0; i < NUM_LEDS; i++) {
leds[i] = ColorFromPalette(pals[pal], i);
}
FastLED.show();
delay(10);
}