FastLED mit ESP8266 Interrupt Problematik

Hallo zusammen,

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:

  1. Auf einen APA102 Strip zu gehen welches einen eigenen Data und Clock Input haben.
  2. Auf einen ARM Prozessor wechseln (Teensey oder Due) und Bastellösung via ESP01 + Serieller Schnittstelle als Kommunikation.
  3. 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)

Grüße Thomas

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.

Heinz

Ok,

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.

Wenn Du zufällig Glück hast, kann es auch mit einer niedrigeren Spannung funktionieren.
Da dürfte dann aber der Störabstand im Keller sein.

Gruß Tommy

ht81:
Oder gibt es noch weitere Lösungsansätze für mich?

  1. DS3231 als RTC verwenden, da ist eine Synchronisierung per NTP nur zweimal im Jahr notwendig. Bei meiner LED-Uhr synchronisiere ich überhaupt nicht.
  2. Anders Programmieren: Synchronisierung per NTP und Anzeige per WS2812 zeitlich entzerren.

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....

Hallo,

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.

Gruß aus Berlin
Michael

amithlon:
Es gibt auch einen Fork für ESP8266-DMA von der FastLED-Lib:
GitHub - coryking/FastLED: The main FastLED library (successor to FastSPI_LED). Please direct questions/requests for advice to the g+ community - http://fastled.io/+ - we'd like to keep issues to just tracking bugs/enhancements/tasks. *NOTE* library work is currently on hold - see https://plus.google.com/102282558639672545743/posts/JQKcujjaXXC for details.

Soeben die Lib gezogen und ausgetauscht. Erste 10 Minuten scheinen echt Stabil zu sein. Ich lasse es heute Nacht mal laufen und berichte dann morgen :slight_smile:

ht81:
... und berichte dann morgen :slight_smile:

Das dürfte schon eine Weile her sein :wink: ... Ergebniss?

FlyingEagle:
Das dürfte schon eine Weile her sein :wink: ... 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.

1 Like