WS2812b LED-streifen aktualisiert sich erst nach zweitem aufruf

Gast #6225926
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:
Gast #6226168
Lesenswert?
• ▲
▼
Joachim S. schrieb:
> Der Fehler wird vermutlich ganz banal damit zusammenhängen, dass Du
> sendArray innerhalb der Schleife aufrufst. Statt sendArray direkt nach
> der Schleife und direkt vor dem _delay_ms aufzurufen.

Dem war auch so. Besten dank :)

Habe eigentlich gedacht, dass es so wie beim SPI wäre. also einfach wenn 
neue bits vorne rein kommen die alten hinten raus (und beim nächsten 
vorne rein). Also dürfte es eigentlich keinen Unterschied machen, ob ich 
jetzt öfters neue daten rein schiebe oder alle auf einmal.

Aber trotzdem nochmal besten dank :)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.