Der Fade funktioniert nicht. Ich übergebe den Wert von value und reverse
und erwarte, dass dieser hoch oder runtergezählt wird. Jedoch bleibt er
konstant.
1 | int8_t fadeLeds(uint16_t duration)
|
2 | {
|
3 | static uint32_t lastMillis = 0;
|
4 | static uint8_t value = 20;
|
5 | static int8_t reverse = 0;
|
6 |
|
7 | if (millis() - lastMillis >= duration)
|
8 | {
|
9 | lastMillis = millis();
|
10 | fade(&value, &reverse);
|
11 | for (uint8_t led = 0; led < NUM_LEDS; led++) leds[led] = CHSV(hue, 255, value);
|
12 | }
|
13 | }
|
14 |
|
15 | int8_t fade(uint8_t *value, int8_t *reverse)
|
16 | {
|
17 | if (*reverse == 0)
|
18 | {
|
19 | if (*value < 255) *value++;
|
20 | else
|
21 | {
|
22 | *reverse = 1;
|
23 | *value--;
|
24 | }
|
25 | }
|
26 | else
|
27 | {
|
28 | if (*value > 0) *value--;
|
29 | else
|
30 | {
|
31 | *reverse = 0;
|
32 | *value++;
|
33 | }
|
34 | }
|
35 | }
|