da ich noch einen LED Streifen mit 60 LED (WS2812B) und mehrere NodeMCU habe, dachte ich mir, das ich mir eine Ring Uhr baue. Da ich seither immer die FastLED Library benutzt habe wollte ich diese nun auch hier nutzen. Einziger Unterschied: das erste mal eine Kombination WS2812B LEDs mit einem NodeMCU.
Ich stellte kurz darauf hin, das die LEDs wie Wild flackerten. Also mal bei den Issue und der FAQ nachgelesen: Es gibt ein Problem mit den Interrupts und dem Timing der LEDs.
Abhilfe kann ein "#define FASTLED_INTERRUPT_RETRY_COUNT 1" oder ein "#define FASTLED_ALLOW_INTERRUPTS 0" sein. Ersteres ging bei mir nicht (Flackerte immer noch). Letzteres hatte ich dann das Problem das ich irgendwann (nach paar Stunden) in ein WDT Timeout laufe. Die Zeit hole ich per NTP und aktualisiere dies via "setSyncProvider(getNtpTime)" alle 600s. Wenn ich das richtig verstehe bleibt mit eigentlich nichts anderes übrig, als:
Auf einen APA102 Strip zu gehen welches einen eigenen Data und Clock Input haben.
Auf einen ARM Prozessor wechseln (Teensey oder Due) und Bastellösung via ESP01 + Serieller Schnittstelle als Kommunikation.
Auf einen AVR Prozessor mit Bastellösung via ESP01 + Serieller Schnittstelle als Kommunikation.
Oder gibt es noch weitere Lösungsansätze für mich? Eine andere Library benutzen (Adafruit) wird auch keinen Sinn machen, da diese wohl auch die Interrups deaktiviert. (Noch nicht getestet)
Halo,
Du bist sicher das die Spannung der Datenleitung innerhalb der Spezifikation liegt. D.h bei 5V Versorgungsspannung wird ein H Pegel erst bei 3,5V erkannst.
es gibt da gerade ebenfalls eine Post hier zu dem Thema.
das wäre zumindest noch einen Ansatz den man probieren könnte. Das habe ich gar nicht in betracht gezogen. Aber was dann dennoch komisch ist: Wenn ich "#define FASTLED_ALLOW_INTERRUPTS 0" aktivere, geht es ja augenscheinlich trotz der Spannung von 3,3V am Di.
Kleines Update: Eine Diode bringt auch nichts. Es flackert immer noch an LEDs die nicht an sein sollten.
@agmue: Sobald ich das WLAN Modul aktiviere (Also Initialisierung des WIFI Modul) fängt das ganze an. Somit scheidet die Option mit dem RTC auch aus, den dafür muss ich ja mindestens einmal synchronisieren.
Soeben noch einen Level Shifter gefunden (Was man nicht so alles über die Zeit sammelt....)
Bringt aber auch keine Besserung. Auch das komplette deaktivieren des WLAN Moduls bringt auch nichts. Es ist dann zwar sehr selten, doch es ist nicht ganz weg. Muss also meine Aussage revidieren....
eine Möglichkeit: NeoPixelBus-Lib benutzen, die macht I2S-DMA, das klappt auch mit WLAN.
Es gibt auch einen Fork für ESP8266-DMA von der FastLED-Lib:
Läuft hier mit einer 16x16 Matrix incl. WLAN und MQTT ohne Probleme mit 50 fps.
"Böse" Version Pegelwandler: Din über 1k an +5V vom Stripe, Din über 470 Ohm an GPIO des ESP8266. Verschiebt den Pegel an Din auf ca. 1,2V Low und 3,9V High und damit in den passenden Spannungsbereich, war nötig, weil einige Versionen des WS2812B nicht meit dem Ausgangspegel des ESP8266 klarkamen. Es gibt über die Zeit leider mehrere Varianten der WS2812B die man nicht wirklich unterschieden kann.
FlyingEagle:
Das dürfte schon eine Weile her sein ... Ergebniss?
Das kommt leider recht häufig vor, was ich als sehr schade empfinde, da Informationen immer in beide Richtungen fließen sollten, auch wenn sich Qualität und Quantität durchaus unterscheiden dürfen. Wenn man hier aktiv ist, darf man sich dadurch nicht frustrieren lassen.