Ich programmiere nun schon seit einigen Jahren WS2812b LED Streifen. Mit der Zeit werden die Projekte größer und die Codes aufwändiger.
Aktuell habe ich ein Projekt mit einer großen Matrix (38x48 LEDs), und realistischen Feuereffekt, welcher meinem ESP8266 leider zu viel wurde.
Stattdessen bin ich auf einen ESP32 umgestiegen (Espressif ESP32 WLAN Dev Kit Board Development Bluetooth Wifi v1 WROOM32 NodeMCU – MAKERSHOP.DE) . Leider schaffe ich es nicht, diesen zur Ausgabe von einfachen Bespielcodes für die LEDs zu motivieren. Am Pin Ausgang messe ich mit meinem Oszilloskop nur das Netzrauschen von 50Hz.
Als Boardtyp habe ich das ESP32 Dev Module aus dem Espressif Boardverwalter ausgewählt.
Ich nutze Pin 4, wie ich in einem Guide im Netz gelesen habe. Dieser spricht auch auf digitalWrite Befehle an, welche ich auch messen kann.
Der Beispielcode läuft ohne Einschränkungen auf meinem ESP8266 (mit Levelshifter auf 5V).
Ich freue mich sehr über Hilfe, da weder ChatGPT, noch andere Forenbeiträge mir bisher helfen konnten.
Danke schon mal für deine schnelle Antwort. Ich habe ein bisschen Resteverwertung betrieben und musste daher für die ersten Spalten einen Weißabgleich machen. Diesen Code habe ich auch zum testen verwendet.
#include <Adafruit_NeoPixel.h>
#define PIN 4 // Pin, an dem die WS2812B angeschlossen ist
#define NUM_LEDS (5 * 48) // Anzahl der LEDs insgesamt
#define STANDARD_BRIGHTNESS 72 // Die Helligkeit für Spalten (72,72,72)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pinMode(PIN, OUTPUT);
strip.begin();
strip.show(); // Setzt alle LEDs auf "aus" zu Beginn
}
void loop() {
// Hier stellst du die Helligkeit für die Spalten 4-38 (dunklere LEDs) ein
setColumnBrightness(3, STANDARD_BRIGHTNESS, STANDARD_BRIGHTNESS, STANDARD_BRIGHTNESS); // Setze für Spalte 4-38 (Index 3) die Helligkeit auf 72,72,72
setColumnBrightness(4, STANDARD_BRIGHTNESS, STANDARD_BRIGHTNESS, STANDARD_BRIGHTNESS); // Setze für Spalte 4-38 (Index 3) die Helligkeit auf 72,72,72
// Teste nun die ersten drei Spalten mit verschiedenen Helligkeitswerten
setColumnBrightness(0, 20, 20, 20); // Spalte 1 (erste Spalte)
setColumnBrightness(1, 35, 30, 30); // Spalte 2 (zweite Spalte)
setColumnBrightness(2, 48, 36, 42); // Spalte 3 (dritte Spalte)
strip.show(); // Zeige die Änderungen an
delay(50);
}
void setColumnBrightness(int columnIndex, int rot, int gruen, int blau) {
// Die Spalten werden vertikal adressiert, also müssen wir die LEDs von unten nach oben ansteuern
for (int i = columnIndex * 48; i < (columnIndex + 1) * 48; i++) {
strip.setPixelColor(i, strip.Color(rot, gruen, blau)); // Setze den Farbwert (RGB)
}
}
```
Vielen Dank, das bringt mich ein gutes Stück weiter.
Ich habe es gerade mit 48 LEDs probiert. Plötzlich funktioniert es super. Gibt es da einen work-around oder muss ich mir andere Controller bestellen, wenn ich alle 38 Streifen steuern möchte?
Wer lesen kann, ist klar im Vorteil ich habe den Arduino ESP32 Manager benutzt, mit der von Espressif läuft es. ChatGPT hat mir die 1.0.6 empfohlen. Mit dieser läuft sogar mein Ziel-Code auf den vollen 36*48 LEDs.
Vielen Dank, darauf wäre ich alleine nicht gekommen.
Wenn noch jemand zufällig weiß, wie man es schafft, dass ich mich per BT mit dem Controller verbinden kann und pixels.show() dennoch ausführen kann, bin ich restlos glücklich.