Guten morgen,
ich habe schon länger ein Problem mit einem WS2812b LED-streifen.
1 | #define WS2818_SEND_DATA_DELAY 50
|
2 | #define WS2818_MAX_PIXEL 110
|
3 |
|
4 |
|
5 | CRGB ws2818Array[WS2818_MAX_PIXEL];
|
1 | /* Setzen der LEDs */
|
2 | for (n=0; n<WS2818_MAX_PIXEL; n++)
|
3 | {
|
4 | if(wordArray[n]==1)
|
5 | {
|
6 | ws2818Array[n].r=50;
|
7 | ws2818Array[n].g=50;
|
8 | ws2818Array[n].b=50;
|
9 | sendArray((uint8_t *) ws2818Array);
|
10 | }
|
11 | else
|
12 | {
|
13 | ws2818Array[n].r=0;
|
14 | ws2818Array[n].g=0;
|
15 | ws2818Array[n].b=0;
|
16 | sendArray((uint8_t *) ws2818Array);
|
17 | }
|
18 | }
|
19 | _delay_ms(WS2818_SEND_DATA_DELAY);
|
wordArray ist ein 110 langer array, welches eine Matrix wiederspiegelt.
Das Problem ist nun, dass die Änderung der LEDs erst gemacht werden,
wenn ich diese schleife ein zweites mal durchlaufen habe.
Setze ich das _delay_ms jeweils direkt nach der funktion sendArray, wird
es direkt übernommen(so sieht es zumindest aus). Allerdings dann nicht
alle LEDs auf einmal, sondern eine nach der anderen.