// SPDX-License-Identifier: BSD-2-Clause #include "led_controller.h" // Internal LED buffer — FastLED writes to this array, then pushes it to the strip. static CRGB leds[NUM_LEDS]; void leds_begin() { FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(MAX_BRIGHTNESS); FastLED.clear(true); // clear + show: strip starts fully off } void leds_apply_color(CRGB color, bool sparkle) { #if ACTIVE_PATTERN == PATTERN_SOLID fill_solid(leds, NUM_LEDS, color); #endif if (!sparkle) return; static uint8_t sparkle_timer[NUM_LEDS]; if (random8() < SPARKLE_CHANCE) { sparkle_timer[random8(NUM_LEDS)] = SPARKLE_FRAMES; } for (uint8_t i = 0; i < NUM_LEDS; i++) { if (sparkle_timer[i] > 0) { leds[i] = CRGB::White; sparkle_timer[i]--; } } } void leds_show() { FastLED.show(); }