WLED LEDs leuchten nur teilweise?

1 Antwort

Das könnte ein Timingproblem sein.

Die LEDs erhalten die Daten und nehmen sich die ersten Bits die ein mal die Farbinformation haben heraus und leiten alle anderen einfach weiter. Jede LED denkt dadurch, dass sie die erste ist. Damit die LED weiß, dass die wieder gemeint ist und die Daten behalten soll statt durch zu leiten wird eine Pause gemacht.

Stockt Dein Datenstrom aus irgend einem Grund, dann fängt wieder die erste LED an Daten zu nehmen.

Das müsstest Du aber sehen, wenn Du die LEDs unetrschiedlich färbst, also die erste z.B. grün sein soll und die LED die nicht mehr erreicht wird soll blau sein. Dann würde die erste LED in der Reihe dann blau sein wenn die Daten also dort landen.

Denk auch daran, dass es zwei verschiedene individuell steuerbare LEDs gibt, nur RGB und WRGB. Die WRGB brauchen 1/3 mehr Daten für das zusätzliche weiss. Aber dann wären die Farben alle komplett falsch und Du würdest nur genau 1/4 des Streifens verlieren, nicht mehr als die Hälfte.

Prüfe ob der Richtige Takt im ESP eingestellt ist. Dazu einfach ein Beispielprogramm laden dass die LED blinken lässt. Das stellst Du auf eine Sekunde und misst z.B. 30x Blinken aus ob das passt.

Woher ich das weiß:Berufserfahrung

nichtLiquide 
Fragesteller
 14.09.2023, 10:16

Soweit ich es gerade getestet habe funktioniert die Farbwiedergabe und es fängt nicht wieder von vorne an, wenn es am Ende aufhört. Ich benutze Aktuell WLED 0.13.3 SR mit dem ESP32

0
Commodore64  14.09.2023, 11:13
@nichtLiquide

Das ist schwierig. Leider kann man in den ESP32 nicht live reingucken.

Dazu brauchst Du entweder ein Oszilloskop (mit Speicher) oder einen Logic Analyser. So was ist unheimlich wichtig wenn man viel mit Mikrocontrollern macht.

Die billigste Variante ist ein einfacher 8-Bit Analyser:

https://www.amazon.de/AZDelivery-%E2%AD%90%E2%AD%90%E2%AD%90%E2%AD%90%E2%AD%90-Logic-Analyzer-gratis/dp/B01MUFRHQ2

für größere Projekte sollte es min 16 bit sein und am besten ein Scope dazu. Es gibt auch "Mixed Signal Scopes", die haben dann 16-bit TTL gleich eingebaut.

Das schöne ist, dass man im seinem programm unbenutzte Portpins "zappeln" lassen kann und dann am Analyser/Scope das Timing seines Programmablaufes genau sehen kann.

So kann man dann z.B. hingehen und Portpin 0 auf HIGH setzen, Pin 1 abfragen und danach Pin 0 wieder LOW machen. Auf dem Scope sieht man dann Nadeln auf Pin 0 wenn der µC nach Pin 1 guckt. So kann man dann sehen was der µC genau erfasst, ob er das regelmäßig macht und ob der das überhaupt macht. Deswegen braucht man mindestens 2 Kanäle, besser 4 - oder Mixed Signals bzw. einen Analyser dazu. Ein 1-Kanal "Scope Multimeter" reicht leider nicht!

0
nichtLiquide 
Fragesteller
 14.09.2023, 17:12
@Commodore64

Gibt es keine anderen Methoden dafür? Ich möchte ja nur diese eine LED Leiste komplett ansteuern können und nichts weiter, mit einem ESP8266 ging das alles, allerdings konnte dieses Board keine SR Version aufnehmen

0
Commodore64  14.09.2023, 22:57
@nichtLiquide

Man kann den Code durchlesen und wild raten was da passiert oder man schaut sich den Datenstrom an die LEDs an und guckt ob da was auffällt. Dann kann man bei einem Ungenutzten portpin Signale senden in bestimmten Programmteilen und Schleifen. So kann man dann sehen ob, wann und wie oft diese Stellen ausgeführt werden. So kann man dann auf dem Scope auch mitzählen wie oft eine Schleife durchlaufen wird, also ob die "hängt" oder zu früh abgebrochen wird.

Mit noch nicht mal €15 sollte doch das 8-Bit Ding aus dem Link drin sein, oder?

Damit kannst Du jedes Timing, Datenprotokoll und mit kleinen Ergänzungen auch den Programmablauf transparent machen.

In C hat man keine Kontrolle über das Timing, es ist immer gut zu wissen wie lange ein Programmdurchlauf oder eine Unterfunktion braucht bevor man plötzlich irgendwas "überlastet" und alles außer Kontrolle gerät. Also wenn ein programmumlauf viel zu lange dauert und die Funktionen nicht mehr oft genug ausgeführt werden. Die RS232 ist zwar gut und schön, aber ein paar Zeichen ausgeben dauert "Ewigkeiten". EInen Portpin zwischendurch ein und auszuschalten kostet fast keine Zeit,

Mit dem Analyser kannst Du also leicht sehen ob die Daten korrekt gesendet werden. Werden Zahlen größer kann es sein, dass das Timimg der einzelnen Bits plötzlich anders wird und das kann dann zu solchen Effekten führen, also dass eine Schleife erst mal gut arbeitet und plötzlich nicht mehr.

Oder Du siehst, dass die Daten plötzlich abbrechen. Dann weißt Du, dass da irgendwas vorzeitig beendet wird anstatt einfach nur "Quatsch" zu machen.

Das Ding kann also sehr nützlich sein, aber nicht nur beid er Fehlersuche sondern auch bei der Programmentwicklung.

1