/* blendwave * * By: Andrew Tuline * * Date: October, 2015 * * This uses beats, blend and the fill gradient functions to blend a couple of waves together. Again, try making changes to this and see how it looks. * */ #include "FastLED.h" // FastLED library. #if FASTLED_VERSION < 3001000 #error "Requires FastLED 3.1 or later; check github for latest code." #endif // Fixed definitions cannot change on the fly. #define LED_DT 12 // Data pin to connect to the strip. #define LED_CK 11 // Clock pin for WS2801 or APA102. #define COLOR_ORDER BGR // It's GRB for WS2812 and BGR for APA102. #define LED_TYPE APA102 // Using APA102, WS2812, WS2801. Don't forget to modify LEDS.addLeds to suit. #define NUM_LEDS 60 // Number of LED's. // Global variables can be changed on the fly. uint8_t max_bright = 128; // Overall brightness definition. It can be changed on the fly. struct CRGB leds[NUM_LEDS]; // Initialize our LED array. CRGB clr1; CRGB clr2; uint8_t speed; uint8_t loc1; uint8_t loc2; uint8_t ran1; uint8_t ran2; void setup() { Serial.begin(57600); // Initialize serial port for debugging. delay(1000); // Soft startup to ease the flow of electrons. LEDS.addLeds(leds, NUM_LEDS); // Use this for WS2801 or APA102 // LEDS.addLeds(leds, NUM_LEDS); // Use this for WS2812 FastLED.setBrightness(max_bright); set_max_power_in_volts_and_milliamps(5, 500); // FastLED Power management set at 5V, 500mA. } // setup() void loop(){ blendwave(); FastLED.show(); } // loop() void blendwave() { speed = beatsin8(6,0,255); clr1 = blend(CHSV(beatsin8(3,0,255),255,255), CHSV(beatsin8(4,0,255),255,255), speed); clr2 = blend(CHSV(beatsin8(4,0,255),255,255), CHSV(beatsin8(3,0,255),255,255), speed); loc1 = beatsin8(10,0,NUM_LEDS-1); fill_gradient_RGB(leds, 0, clr2, loc1, clr1); fill_gradient_RGB(leds, loc1, clr2, NUM_LEDS-1, clr1); } // blendwave()