SensESP 3.1.1
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
led_blinker.cpp
Go to the documentation of this file.
1#include "led_blinker.h"
2
3#include "FastLED.h"
4
5namespace sensesp {
6
7LEDPatternFragment frag_solid_color(uint32_t duration_ms, const CRGB& color) {
8 return LEDPatternFragment(duration_ms,
9 [color](uint32_t, CRGB& crgb) { crgb = color; });
10}
11
13 uint32_t fade_duration_ms,
14 const CRGB& target_color) {
15 LEDPatternFragment fragment(duration_ms, [target_color, fade_duration_ms](
16 uint32_t elapsed_ms,
17 CRGB& crgb) {
18 static CRGB from_color;
19 static unsigned long last_elapsed_ms = 0;
20 if (elapsed_ms < last_elapsed_ms) {
21 from_color = crgb;
22 }
23 last_elapsed_ms = elapsed_ms;
24 if (elapsed_ms >= fade_duration_ms) {
25 crgb = target_color;
26 return;
27 }
28 crgb = blend(from_color, target_color, elapsed_ms * 256 / fade_duration_ms);
29 });
30
31 return fragment;
32}
33
34LEDPatternFragment frag_linear_invert(uint32_t duration_ms, bool reverse) {
35 return LEDPatternFragment(
36 duration_ms, [duration_ms, reverse](uint32_t elapsed_ms, CRGB& crgb) {
37 // Blend the color from current color to inverted
38 if (reverse) {
39 crgb = blend(CRGB(255, 255, 255) - crgb, crgb,
40 elapsed_ms * 256 / duration_ms);
41 } else {
42 crgb = blend(crgb, CRGB(255, 255, 255) - crgb,
43 elapsed_ms * 256 / duration_ms);
44 }
45 });
46}
47
48LEDPatternFragment frag_blend(uint32_t duration_ms, const CRGB& target_color,
49 bool reverse) {
50 return LEDPatternFragment(duration_ms, [duration_ms, reverse, target_color](
51 uint32_t elapsed_ms, CRGB& crgb) {
52 if (reverse) {
53 crgb = blend(target_color, crgb, elapsed_ms * 255 / duration_ms);
54 } else {
55 crgb = blend(crgb, target_color, elapsed_ms * 255 / duration_ms);
56 }
57 });
58}
59
60LEDPatternFragment frag_nop(uint32_t duration_ms) {
61 // No operation
62 return LEDPatternFragment(duration_ms, [](uint32_t, CRGB&) {});
63}
64
65} // namespace sensesp
LEDPatternFragment frag_linear_fade(uint32_t duration_ms, uint32_t fade_duration_ms, const CRGB &target_color)
LEDPatternFragment frag_nop(uint32_t duration_ms)
LEDPatternFragment frag_blend(uint32_t duration_ms, const CRGB &target_color, bool reverse)
LEDPatternFragment frag_linear_invert(uint32_t duration_ms, bool reverse)
LEDPatternFragment frag_solid_color(uint32_t duration_ms, const CRGB &color)