FastLED und WiFiNINA inkompatibel?

Ich benutze Metro Mini, Gravity Analog Sound Level Meter, Adafruit AirLift FeatherWing ESP32, Adafruit NeoPixel Ring 24 RGB LEDs.

Ohne WiFiNINA funktioniert alles (pin A0 Dezibel als Spannung auslesen, LED Ring als peak hold Lärmanzeiger). Mit WiFiNINA (um die Werte zu Adafruit IO hochzuladen) funktioniert FastLED-basierter code nicht mehr.

Sind die beiden libraries inkompatibel? Gibt es eine alternative RGB LED library, die sich mit WiFiNINA verträgt?

Danke!

FastLED ist die RGB-Lib.

Gruß Tommy

WiFiNINA, geändert.

Verbreitet ist die Adafruit-Bibliothek. Zur Verträglichkeit kann ich aber keine Auskunft geben.

Danke, gleiches Problem mit der Adafruit library : (

Welchen LED-Typ verwendest Du?

WS2812 werden mit abgeschalteten Interrupts blockierend angesteuert.

Mit anderen Worten LEDs vom Typ WS2812B.

Das bedeutet?

Der µC überträgt nur Daten, sonst ist keine Aktion möglich.

Das heißt, was kann ich nun tun? Die FastLED oder Adafruit Neopixel library... modifizieren? Aber wie?

Ich könnte einen zweiten Metro Mini nehmen, vom ersten über I2C gesteuert, der nur für die FastLED-Dinge, also den Ring zuständig ist, aber das wäre overkill.

Geht nicht. Die Zeiten des Signals zur Ansteuerung der WS2812B sind so kritisch daß der Controller nur das machen kann.
Es braucht Impulse von 400, 450, 800, 850nS die auf 150nS genau sind.
Andere Bibliotheken machen das auch genau gleich.

Lösung ist die beiden Tasks auf 2 verschieden Controller zu betreiben.

Grüße Uwe

  1. Du kannst einen anderen LED-Typ wie APA102 verwenden, der Takt und Daten getrennt hat.
  2. Du verwendest einen zweiten Arduino.
  3. Du ersetzt WiFiNINA.

Meine Fehleranalyse ist nur eine Spekulation, die ich auf Analogien stütze, da ich WiFiNINA nicht kenne. Aber alle zeitkritischen Abläufe vertragen sich nicht mit der blockierenden Datenübertragung für die WS2812.

Danke, dann also einen zweiten Metro Mini oder ähnlich kleinen uC.

Äquivalente APA102-Ringe habe ich nicht gefunden, und der Adafruit AirLift FeatherWing ESP32 braucht die WiFiNINA library.

Bei nur 24 Lichtpunkten genügt ein Nano. (Selbst ein ATtiny würde genügen, lohnt aber den zusätzlichen Aufwand nicht.)

Ein ATSAMD51 Cortex M4 zusammen mit einem ESP32, das ist natürlich eine ganz andere Liga, die mit den Standard-Arduinos kaum etwas gemein haben!

Mit einem ESP32 als Access Point und FastLED steuere ich WS2812 über eine HTML-Seite für die Animationsparameter. Dabei nutzt FastLED geschickt die Hardware des ESP32, damit die blockierende Datenübertragung möglichst wenig stört.

Was willst Du machen? Geht das nicht auch mit einem ESP32 alleine? Oder mit einem M4 und einem ESP32 ohne WiFiNINA?

Es sind sechs Installationen in einer U-Bahn Station, die die Dezibel messen, den Lärm auf einem RGB LED Ring hinter einer großen Fresnel-Linse darstellen, und parallel die Daten zu Adafruit IO auf ein "public dashboard" übertragen. Es geht um citizen science, im weitesten Sinne.

Für die Installationen habe ich schon jeweils einen Metro Mini und einen AirLift FeatherWing gekauft, und das Gehäuse ist schon dafür vorbereitet, ich kann gerade noch einen zweiten Metro Mini unterbringen.

Vielleicht probiere ich bei Gelegenheit auch mal eine reine ESP32-Lösung aus.

Dann ist es für ein Umschwenken zu spät.

Viel Erfolg!

Danke, ja, zum Glück paßt noch ein zweiter uC rein.

Leider sind 2 uC wahrscheinlich auch keine Lösung. Sobald Master und Slave I2C code ausführen, kommen die übertragenen 1-byte Werte auf dem Slave nur stotternd an.

Angefangen von falschen Erwartungen bis hin zu einem schlechten oder schlecht umgesetzen Konzept gibt es da natürlich viele Problemquellen. Aus der Entfernung kann man da leider schlecht helfen.

Möglicherweise findest Du ja doch noch den richtigen Dreh :face_with_monocle:

Na dann schau mal - ha. war ich doch gerade auf dem anderen Zweig unterwegs....

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.