Parallele Nutzung von Adafruit_Neopixel und ESP32 Wroom32 Bluetooth Modul

Hallo Zusammen,

Ich nutze ein ESP32 Dev Board Espressif ESP32 WLAN Dev Kit Board Development Bluetooth Wifi v1 WROOM32 NodeMCU – MAKERSHOP.DE mit integriertem Wifi/BT Modul zur Ansteuerung von WS2812b LEDs.

Bei mienem aktuellen Projekt möchte ich einen einfachen Zahlenwert von 0-255 über eine Bluetooth Terminal App an meinen ESP senden. Das klappt auch schon ganz gut mit folgendem Code:

#include "BluetoothSerial.h"
BluetoothSerial SerialBT;

void setup() {
    Serial.begin(115200);
    SerialBT.begin("JD Wandbild"); 
}

void loop() {
    if (SerialBT.available()) {
        String receivedString = SerialBT.readStringUntil('\n');  // Ganze Zeile lesen
        byte receivedValue = receivedString.toInt();  // In Integer umwandeln
        SerialBT.print("Accepted");
    }
    delay(30);
}

Wenn ich nun allerdings den pixels.show() Befehl aus der Adafruit Bibliothek nutzen möchte, lässt sich keine BT Verbindung mehr zum Controller herstellen (Connection failed due to Timeout)

Ich habe auch schon versucht den .show() Befehl und die BT Anwendung auf unterschiedliche Cores zu verteilen. Erfolglos.

Kann mir jemand helfen? Vielen Dank im Voraus!

Die WS2812b-LED haben ein sehr enges Timing bei der Übertragung der Daten mittles show(), weil sie kein getrenntes Taktsignal nutzen. Dafür werden die Interrupt abgeschaltet, was zur Störung anderer Funktionalitäten, wie auch z.B. IR-Fernbedienungen führt.
Abhilfe kann hier die Verwendung von RGB-LED mit zusätzlicher Taktleitung (wie z.B. APA102) schaffen.

Gruß Tommy

Ich hätte genauso geantwortet wie Tommy, allerdings habe ich Dein Programm mit einem anderen Programm verbunden und zu meiner Überraschung funktioniert das ohne "Connection failed". Jetzt bin ich erstmal etwas ratlos, auch weil sich BLE in der Bibliothek verbirgt.

Nun ist BLE nicht BT, aber müßte eigentlich durch die Neopixel genauso gestört werden. In meinen Augen siehst Du derzeit Fragezeichen :thinking:

Hast Du schon mal FastLED probiert? Beim ESP32 soll da DMA mit eigener Hardware verwendet werden, was das Timingproblem entschärfen könnte.

Ja, über DMA könnte beides gehen. Muss man testen.

Gruß Tommy

Danke für die Antworten.
Ich bin um die Bluetooth Anwendung herum gekommen, aber greife gerne auf die Fastled Lösung zurück, wenn ich wieder auf das Problem stoße

Bitte beachte die vielen Konjunktive in meiner Aussage.

Ich nutze die Tabs von Fips, zur Datenkommunikation JSON und HTML-Dateien im LittleFS.

Dies ist ein öffentliches Forum, das vom Nehmen und Geben lebt. Wenn Du also was zu geben hast, dann scheue Dich nicht, anderen mit Deinem Wissensstand zu helfen :slightly_smiling_face:

Wenn ich bei einer Antwort jedes dritte Wort in ChatGPT eingeben muss, um den Zusammenhang zu verstehen, habe ich den Eindruck, als wäre dieses Projekt ein wenig zu viel für meine eingeschränkten Kenntnisse. Da ist es einfacher, sich eine Alternative zurecht zu pfuschen.

Anstelle einer manuellen Eingabe von Zahlenwerten, habe ich mir eine mathematische Funktion überlegt, die mir die Arbeit abnimmt.
Ist zwar nicht das Selbe, aber die Funktion erfüllt es trotzdem.

Mir ging es darum, bei einem Feuer-Effekt die Intensität der Flamme zu regulieren und sie damit realistischer zu machen. Mit einer manuellen Eingabe wäre das weniger natürlich, Eine modifizierte Sinusfunktion ist da auch naheliegender.
Danke dennoch für den Einblick in den Fortgeschrittenen Kurs :slight_smile:

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