Neopixel inaktiv nach einer Weile, aber mqtt reaktiviert

Hallo zusammen,

ich habe bei mir das Problem, dass die Neopixel sich nach einiger Zeit abschalten (8 Stück). Einen Elko zur Stabilisierung der Spannung und einen kleinen Widerstand zum Datenport habe ich schon eingelötet. Das Schräge ist, dass nach dem Setzen der Neopixel Helligkeit via mqtt die Anzeige wieder funktioniert. Im Code scheint da aber nicht viel zu passieren, außer dass der Wert für die Helligkeit neu gesetzt wird. Irgend eine Idee, woran das Abschalten liegen kann und wie man das abstellen kann?

Johannes

das liegt vielleicht an der Versorgungsspannung.

mit 3,3V sind wir ja eh schon außerhalb der SPEC.

Falls die Steckkontakte nicht sehr gut sind oder deine Spannungsversorgung nach unten streut, dann kann ich mir vorstellen, dass der Controller im Neopixel nicht mehr sauber arbeitet

Das ist aber ein Bauchgefühl und basiert nicht auf eigenen Erfahrungen

Was für ein ESP32-Develboard benutzt du? Ich meine mich ganz dunkel erinnern zu können, dass mal jmd. mit einem Lolin32 lite Probleme hatte. Da wurde vermutet, die maximale Stromabgabe eher bisschen unterdimensioniert war.
Ich habe jedenfalls mit Lolin32, Lolin D32 und Lolin D32 pro solche Effekte nicht beobachten können. Wobei das, was @joker schreibt, schon korrekt ist: Streng genommen betreiben wir den Neopixel mit 3.3V außerhalb seiner Spec.

Hallo zusammen,

danke für die Hinweise.

Es ist ein Lolin 32, kein Lite, der da werkelt. Über einen MT3608 Step Up Converter werden 5 V u. a. für die Neopixel erzeugt, aber dann über die PIO des ESP32 direkt angesteuert. Wahrscheinlich auch nicht ideal.

Ich denke es ist wohl ein individuelles Problem meiner Box, für das ich nun einen Workaround suche.

Was halt erstaunlich ist, ist dass das Verändern der Helligkeit über mqtt die Neopixel wieder leuchten lässt. Werden die nach dieser Änderung irgendwo neu initialisiert? Ich konnte da auf die Schnelle im Code nichts finden.

Viele Grüße
Johannes

Sämtliches Handling zum Neopixel findest du hier:
https://github.com/biologist79/ESPuino/blob/4a0729a5d100bbdd1ebeb2e45b1d086357665979/src/main.cpp#L1917
Das ist ein Task.

Und von diesem wird ledBrightness ausgewertet:

Mehr mache ich da nicht.

Ah, prima! Vielen Dank für die ausführliche Antwort.

Ich habe jetzt als Quickfix die Condition

if (lastLedBrightness != ledBrightness)

rausgenommen, so dass immer setBrightness aufgerufen wird. Das sollte das Problem bei mir beheben.

Danke Dir für das schöne Projekt und die jeweils schnelle Reaktion.

1 „Gefällt mir“