#include // Main LED strip setup #define LED_PIN 5 #define NUM_LEDS 100 #define LED_PART 50 #define BRIGHTNESS 250 #define LED_TYPE WS2811 CRGB leds[NUM_LEDS]; CRGB color_red; CRGB color_blue; CRGB color_green; #define DIAG_PIN 6 void setup() { // Calculate colors hsv2rgb_spectrum(CHSV(4, 255, 100), color_red); hsv2rgb_spectrum(CHSV(170, 255, 100), color_blue); hsv2rgb_spectrum(CHSV(90, 255, 100), color_green); pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_PIN, OUTPUT); pinMode(DIAG_PIN, OUTPUT); // Main LED strip FastLED.addLeds(leds, NUM_LEDS); } void loop() { fill_segmented(CRGB::Green, CRGB::Orange); delay(500); flash(leds, NUM_LEDS, color_red, 10, 20); delay(500); flash(leds, NUM_LEDS, color_blue, 10, 20); delay(500); } void fill_segmented(CRGB c1, CRGB c2) { //fill_solid(leds, LED_PART, c1); fill_gradient_RGB(leds, LED_PART, CRGB::Black ,c1); fill_gradient_RGB(leds + LED_PART, NUM_LEDS - LED_PART, CRGB::Black, c2); FastLED.show(); } void flash(CRGB *ptr, uint16_t num, CRGB const& lead, int steps, int step_time) { digitalWrite(LED_BUILTIN, LOW); //fill_solid(leds, NUM_LEDS, CRGB::Black); for (int i = 0; i < steps; ++i) { uint8_t factor = 255 * i / steps; analogWrite(DIAG_PIN, factor); CRGB tail = blend(lead, CRGB::Black, factor); uint16_t front = factor * (int) num / 255; fill_solid(ptr, front, tail); //fill_gradient_RGB(ptr, front, tail, lead); //fill_solid(leds + front, NUM_LEDS - front, CRGB::Black); FastLED.show(); delay(step_time); } fill_gradient_RGB(ptr, num, CRGB::Black, lead); FastLED.show(); analogWrite(DIAG_PIN, LOW); }