ESP32 - WS2812B LED-Streifen

In diesem Tutorial lernen wir, wie man den ESP32 verwendet, um einen WS2812B RGB-LED-Streifen zu steuern. Mit einem einzigen ESP32-Pin:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×WS2812B RGB LED-Streifen
1×1000uF Capacitor
1×470Ω Resistor
1×5V Netzteil
1×(Optional) DC-Stromanschluss
1×Verbindungskabel
1×Breadboard
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über WS2812B RGB-LED-Streifen

Pinbelegung

Der WS2812B RGB-LED-Streifen hat drei Pins:

  • GND-Pin: muss mit GND (0 V) verbunden werden.
  • VCC-Pin: muss mit 5 V der externen Stromversorgung verbunden werden.
  • Din-Pin: ist der Pin, der das Steuersignal empfängt. Er sollte mit einem ESP32-Pin verbunden werden.
WS2812B Pinbelegung

※ Notiz:

Die Reihenfolge der Pins kann von Hersteller zu Hersteller variieren. Verwenden Sie immer die auf dem LED-Streifen aufgedruckten Beschriftungen.

Verdrahtungsdiagramm

ESP32 WS2812B RGB-LED-Streifen Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

Wie programmiert man einen WS2812B RGB-LED-Streifen

Es gibt zwei Bibliotheken, mit denen man einen WS2812B-LED-Streifen steuern kann:

  • Adafruit NeoPixel-Bibliothek.
  • FastLED-Bibliothek.

In diesem Tutorial wird die Adafruit NeoPixel-Bibliothek verwendet.

  • Deklariere ein WS2812B-Objekt
#define PIN_WS2812B 4 // ESP32-Pin, der mit WS2812B verbunden ist #define NUM_PIXELS 30 // Die Anzahl der LEDs (Pixel) auf WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialisiert den WS2812B
WS2812B.begin(); // INITIALISIERE WS2812B-Streifenobjekt (ERFORDERLICH)
  • Stellen Sie die Farbe jeder einzelnen LED fest (als Pixel bezeichnet).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Stelle die Helligkeit aller Streifen ein.
WS2812B.setBrightness(100); // ein Wert von 0 bis 255

※ Notiz:

  • WS2812B.setBrightness() wird für alle Pixel auf dem LED-Streifen verwendet. Um die Helligkeit für jeden einzelnen Pixel festzulegen, können wir den Farbwert skalieren.
  • Die Werte, die durch WS2812B.setBrightness() und WS2812B.setPixelColor() festgelegt werden, treten erst in Kraft, wenn WS2812B.show() aufgerufen wird.

ESP32-Code

Der untenstehende Code macht Folgendes:

  • Schalte Pixel der Reihe nach auf Grün, mit einer Verzögerung zwischen den einzelnen Pixeln
  • Schalte alle Pixel für zwei Sekunden aus
  • Schalte alle Pixel gleichzeitig für zwei Sekunden auf Rot
  • Wiederhole den obigen Prozess unendlich oft
/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_WS2812B 16 // The ESP32 pin GPIO16 connected to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B LED strip Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800); void setup() { ws2812b.begin(); // initialize WS2812B strip object (REQUIRED) } void loop() { ws2812b.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one-by-one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel ws2812b.setPixelColor(pixel, ws2812b.Color(0, 255, 0)); // it only takes effect if pixels.show() is called ws2812b.show(); // update to the WS2812B Led Strip delay(500); // 500ms pause between each pixel } // turn off all pixels for two seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(2000); // 2 seconds off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel ws2812b.setPixelColor(pixel, ws2812b.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } ws2812b.show(); // update to the WS2812B Led Strip delay(1000); // 1 second on time // turn off all pixels for one seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(1000); // 1 second off time }

Schnelle Schritte

  • Klicken Sie auf das Bibliotheken-Symbol in der linken Seitenleiste der Arduino IDE.
  • Suchen Sie nach „Adafruit NeoPixel“, dann finden Sie die WS2812B-Bibliothek von Adafruit.
  • Klicken Sie auf die Installieren-Schaltfläche, um die NeoPixel-Bibliothek zu installieren.
ESP32 NeoPixel-Bibliothek
  • Kopiere den obigen Code und öffne ihn mit der Arduini IDE
  • Klicke auf die Upload-Schaltfläche in der Arduini IDE, um den Code auf den ESP32 hochzuladen
  • Sieh dir den LED-Effekt an

※ Notiz:

Für jeden komplexen LED-Effekt bieten wir den kostenpflichtigen Programmierdienst an.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!