Ich habe ein Problem mit der Ansteuerung der LED-Streifen mit meinen ESP32S3. Die ersten vier funktionieren super und an den letzten beiden funktioniert gar nichts.
Hier ist mein Code:
#include <Adafruit_NeoPixel.h>
// Anzahl der LEDs pro Strip
#define NUM_LEDS 30
// Anzahl der Strips
#define NUM_STRIPS 6
// Pins für jeden Strip
int stripPins[NUM_STRIPS] = {5, 18, 19, 21, 22, 23};
// LED-Strips definieren
Adafruit_NeoPixel strips[NUM_STRIPS] = {
Adafruit_NeoPixel(NUM_LEDS, stripPins[0], NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(NUM_LEDS, stripPins[1], NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(NUM_LEDS, stripPins[2], NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(NUM_LEDS, stripPins[3], NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(NUM_LEDS, stripPins[4], NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(NUM_LEDS, stripPins[5], NEO_GRB + NEO_KHZ800)
};
// Helligkeit (kann angepasst werden)
int brightness = 50; // Wert zwischen 0 und 255
void setup() {
// Initialize all LED strips
for (int i = 0; i < NUM_STRIPS; i++) {
strips[i].begin();
strips[i].setBrightness(brightness);
strips[i].show(); // Alle LEDs aus
}
}
void loop() {
// LEDs der Reihe nach einschalten
for (int j = 0; j < NUM_LEDS; j++) {
for (int i = 0; i < NUM_STRIPS; i++) {
strips[i].setPixelColor(j, strips[i].Color(255, 0, 0)); // Beispiel: rot
strips[i].show();
}
delay(50); // Verzögerung zwischen LEDs
}
delay(500); // kurze Pause nach dem Aufleuchten aller LEDs
// Alle LEDs ausschalten
for (int i = 0; i < NUM_STRIPS; i++) {
strips[i].clear();
strips[i].show();
}
delay(500); // Pause, bevor die LEDs wieder hochlaufen
}
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Vielen Dank für die schnelle Antwort. Ja hab schon gefühlte alle Pins durchprobiert, hab Wiederstände in Reihe geschaltet, aber nichts hat leider geholfen.
Super
fragt sich nur noch woran es bei mir liegt. Ich verwende einen ESP32-S3-Tiny von Waveshare und verwende die GPIOs 1, 3, 5, 14, 16, 18, die anderen Pin stehen wahrscheinlich nur noch im Programm weil ich viel unterschiedliche Pin ausprobiert habe.
Ich speise die LED-Streifen über ein externes Labornetz das auf 5V eingestellt ist, Strombegrenzung ist noch nicht erreicht.
Es bleiben immer die LED-Streifen aus die im Programm als letztes aufgerufen werden.
Ich verstehe immer nicht, warum man nicht nur einen Pin benutzt, die Streifen in Reihe schaltet und einfach im Programm die LEDs mit einen Offset ansteuert.
Dazu könnte auch noch das 3.3V / 5V Problem kommen.
Je nach gewünschten Animationen könnte die Bibliothek FastLED eine Alternative bieten.
APA102 ermöglichen ca. zehnfach schnellere Animationen.
Bei vielen Pixeln fließt bei WS2812b recht viel Strom, was dicke Kabel benötigt. WS2815 werden wie WS2812b angesteuert, wegen einer Versorgung mit 12 V fließt aber weniger Strom (10 bis 15 mA je Pixel).