#include #include // How many leds in your strip? #define BRIGHTNESS 96 #define NUM_LEDS 12 #define TEMPO 100 #define DATA_PIN 0 // led pin #define BTN_PIN 3 // button pin CRGB leds[NUM_LEDS]; float tcount = 0.0; //-INC VAR FOR SIN LOOPS int ibright = 0; //-BRIGHTNESS (0-255) int tempo_anim = TEMPO; uint8_t gHue = 0; // rotating "base color" boolean run_mod = false; // run mode Button button1(BTN_PIN, PULLUP, 3000); void colorWipe_up(struct CRGB rgb, uint8_t wait) { for (int i = 0; i < NUM_LEDS; i++) { leds[i] = rgb; FastSPI_LED.show(); delay(wait); } } void colorWipe_down(struct CRGB rgb, uint8_t wait) { for (int i = NUM_LEDS - 1; i >= 0; i--) { leds[i] = rgb; FastSPI_LED.show(); delay(wait); } } void black_out() { // all leds off memset(leds, 0, NUM_LEDS * 3); // all leds off FastSPI_LED.show(); } void dual_color(struct CRGB color1, struct CRGB color2, uint8_t wait) { for (int i = 0; i < NUM_LEDS; i++) { memset(leds, 0, NUM_LEDS * 3); // all leds off leds[i] = color1; leds[NUM_LEDS - (i + 1)] = color2; FastSPI_LED.show(); delay(wait); } } void xmas(uint8_t wait){ for (int j = 0; j < 2; j++){ for (int i = 0; i< NUM_LEDS; i++){ leds[i] = ((i % 2) == j)? CRGB::Red: CRGB::Green; FastSPI_LED.show(); } delay(wait); } } boolean check_button(){ if (button1.checkPress() == 1) { run_mod = true; // Serial.println("SHORT PRESS!"); } else if (button1.checkPress() == -1) { black_out(); run_mod = false; // Serial.println("LONG PRESS!"); } return run_mod; } void setup() { // put your setup code here, to run once: FastLED.addLeds < WS2812B, DATA_PIN, GRB > (leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); black_out(); } void loop() { if (run_mod){ // put your main code here, to run repeatedly: for (int i = 0; i < 5; i++) { colorWipe_up(CRGB::Red, tempo_anim); delay(tempo_anim); colorWipe_up(CRGB::Green, tempo_anim); delay(tempo_anim); if (!check_button()) break; } } if (run_mod) { for (int i = 0; i < 5; i++) { dual_color(CRGB::Red, CRGB::Green, tempo_anim); if (!check_button()) break; } } if (run_mod){ for (int i = 0; i < 20; i++) { xmas( tempo_anim); if (!check_button()) break; } } check_button(); black_out(); delay(tempo_anim); }