13 uint32_t fade_duration_ms,
14 const CRGB& target_color) {
18 static CRGB from_color;
19 static unsigned long last_elapsed_ms = 0;
20 if (elapsed_ms < last_elapsed_ms) {
23 last_elapsed_ms = elapsed_ms;
24 if (elapsed_ms >= fade_duration_ms) {
28 crgb = blend(from_color, target_color, elapsed_ms * 256 / fade_duration_ms);
36 duration_ms, [duration_ms, reverse](uint32_t elapsed_ms, CRGB& crgb) {
39 crgb = blend(CRGB(255, 255, 255) - crgb, crgb,
40 elapsed_ms * 256 / duration_ms);
42 crgb = blend(crgb, CRGB(255, 255, 255) - crgb,
43 elapsed_ms * 256 / duration_ms);
51 uint32_t elapsed_ms, CRGB& crgb) {
53 crgb = blend(target_color, crgb, elapsed_ms * 255 / duration_ms);
55 crgb = blend(crgb, target_color, elapsed_ms * 255 / duration_ms);