#include <FastLED.h>
#define LED_PIN 3
#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
const int swt = 5;
byte r,g,b;
int btn = 0;
void setup() {
pinMode(swt, INPUT);
delay(500);
led_init();
opening();
delay(500);
led_clear();
delay(500);
}
void loop() {
btn = digitalRead(swt);
if (btn == HIGH) {
running();
} else {
rainbow();
}
// opening();
// delay(500);
// runningClear();
// switch (btn) {
// case 1:
// sein();
// break;
// case 2:
// rainbow();
// break;
// case 3:
// running();
// break;
// }
}
void led_init() {
FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(255);
}
void led_clear() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Black;
}
}
void test_color() {
for (int i = 0; i < NUM_LEDS;i++) {
// leds[i] = CHSV(135, 255, 255);
leds[i] = CRGB::Red;
}
FastLED.show();
}
void test_animation() {
int j;
for (int i = 0; i < (NUM_LEDS + 2); i++) {
j = i;
leds[j] = CHSV(136, 255, 255);
leds[j-1] = CHSV(136, 255, 255);
leds[j-2] = CHSV(136, 255, 255);
FastLED.show();
delay(2.5);
leds[i] = CHSV(0, 0, 35);
leds[j-1] = CHSV(0, 0, 35);
leds[j-2] = CHSV(0, 0, 35);
}
for (int i = NUM_LEDS; i > -4; i--) {
j = i;
leds[j] = CHSV(136, 255, 255);
leds[j+1] = CHSV(136, 255, 255);
leds[j+2] = CHSV(136, 255, 255);
FastLED.show();
delay(2.5);
leds[j] = CHSV(0, 0, 35);
leds[j+1] = CHSV(0, 0, 35);
leds[j+2] = CHSV(0, 0, 35);
}
}
void opening() {
int j;
for (int i = 0; i < NUM_LEDS; i++) {
j = i;
leds[j] = leds[j-1] = leds[j-2] = CRGB(1, 106, 250);
// leds[j] = leds[j-1] = leds[j-2] = CHSV(140, 255, 255);
FastLED.show();
delay(30);
leds[j] = leds[j-1] = leds[j-2] = CRGB(0, 0, 0);
}
for (int i = NUM_LEDS; i > -4; i--) {
j = i;
leds[j] = leds[j+1] = leds[j+2] = CRGB(1, 106, 250);
FastLED.show();
delay(30);
leds[j] = leds[j+1] = leds[j+2] = CRGB(0, 0, 0);
}
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(1, 106, 250);
FastLED.show();
delay(30);
}
}
void rainbow() {
rainbowColor();
}
void rainbowColor() {
static uint8_t hue = 360;
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(hue - i, 255, 255);
}
FastLED.show();
delay(5);
hue++;
}
void running() {
runningFill();
delay(5);
runningClear();
delay(5);
}
void runningFill() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(0, 0, 255);
FastLED.show();
}
}
void runningClear() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(0, 0, 0);
FastLED.show();
}
}
void sein() {
seinFill();
delay(5);
seinClear();
delay(5);
}
void seinFill() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(52, 11, 0);
FastLED.show();
}
}
void seinClear() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(0, 0, 0);
FastLED.show();
// delay(30);
}
}