ESP32 - Dotstar LED-Streifen

In diesem Tutorial werden wir lernen, wie man den ESP32 verwendet, um DotStar RGB-LED-Streifen zu steuern. Im Detail werden wir lernen:

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×DotStar RGB LED-Streifen
1×1000uF Capacitor
1×470Ω Resistor
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
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 DotStar RGB-LED-Streifen

Pinbelegung

Der DotStar RGB-LED-Streifen hat drei Pins:

  • GND-Pin: muss mit GND (0 V) verbunden werden
  • CI-Pin: Taktpin, der das Taktsignal empfängt. Es sollte mit einem ESP32-Pin verbunden werden.
  • DI-Pin: Datenpin, der das Steuersignal empfängt. Es sollte mit einem ESP32-Pin verbunden werden.
  • 5V-Pin: muss mit dem 5V-Ausgang einer externen Stromversorgung verbunden werden.
DotStar Pinbelegung

Verdrahtungsdiagramm

ESP32 DotStar 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 man DotStar RGB-LED-Streifen programmiert

  • Eine DotStar-Bibliothek einbinden
#include <Adafruit_DotStar.h> #include <SPI.h> // Diese Zeile für Gemma oder Trinket auskommentieren
  • Deklariere ein DotStar-Objekt
#define NUMPIXELS 144 // Anzahl der LEDs im Streifen // So steuern Sie die LEDs von zwei beliebigen Pins aus: #define DATAPIN 16 #define CLOCKPIN 17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG);
  • Initialisiert den DotStar
strip.begin(); // Pins als Ausgang initialisieren strip.setBrightness(255); strip.show(); // Alle LEDs so schnell wie möglich ausschalten
  • Setze die Farbe (r, g, b) jeder einzelnen LED (Pixel genannt).
strip.setPixelColor(pixel, g, r, b);
  • Stelle die Helligkeit aller Streifen ein.
strip.setBrightness(100); // ein Wert von 0 bis 255

※ Notiz:

  • DotStar.setBrightness() wird für alle Pixel auf dem LED-Streifen verwendet. Um die Helligkeit für jedes einzelne Pixel zu steuern, können wir den Farbwert skalieren.
  • Die durch DotStar.setBrightness() und DotStar.setPixelColor() gesetzten Werte treten erst in Kraft, wenn DotStar.show() aufgerufen wird.

ESP32-Code

Der folgende Code färbt Pixel der Reihe nach rot, mit einer Verzögerung zwischen jedem Pixel.

/* * 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-dotstar-led-strip */ #include <Adafruit_DotStar.h> #include <SPI.h> // COMMENT OUT THIS LINE FOR GEMMA OR TRINKET #define NUMPIXELS 144 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 16 // The ESP32 pin GPIO16 #define CLOCKPIN 17 // The ESP32 pin GPIO17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG); void setup() { Serial.begin(9600); strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(255); } void loop() { for (int pixel = 0; pixel < NUMPIXELS; pixel++) { // red color int r = 255; // CHANGE COLOR AS YOUR DESIRE int g = 0; // CHANGE COLOR AS YOUR DESIRE int b = 0; // CHANGE COLOR AS YOUR DESIRE strip.clear(); // turn off all pixel strip.setPixelColor(pixel, g, r, b); // turn on a single pixel strip.show(); delay(1000); // keep each pixel on 1 seconds } }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, lesen Sie wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Verbinden Sie die Verkabelung wie im obigen Bild.
  • Verbinden Sie das ESP32-Board per Micro-USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suchen Sie „Adafruit DotStar“, und finden Sie dann die DotStar-Bibliothek von Adafruit.
  • Klicken Sie auf die Schaltfläche Install, um die DotStar-Bibliothek zu installieren.
ESP32-DotStar-Bibliothek
  • Sie werden gebeten, die Abhängigkeit zu installieren. Klicken Sie auf die Alle installieren Schaltfläche.
ESP32-Tastenfeld-Bibliothek
  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke in der Arduino IDE auf die Schaltfläche Hochladen, um den Code auf den ESP32 hochzuladen
  • Sieh dir den LED-Effekt an

ESP32-Code - LED-Streifen-Kometen-Effekt

Der folgende Code liefert den Kometeneffekt für den DotStar-LED-Streifen.

/* * 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-dotstar-led-strip */ #include <Adafruit_DotStar.h> #include <SPI.h> // COMMENT OUT THIS LINE FOR GEMMA OR TRINKET #define COMET_LENGTH_ALL 30 // in pixel COMET_LENGTH_ALL = COMET_LENGTH_BODY + COMET_LENGTH_HEAD #define COMET_LENGTH_BODY 25 // in pixel #define COMET_LENGTH_HEAD 5 // in pixel #define TWO_COMET_DISTANCE 10 // in pixel #define COMET_SPEED 2000 // in millisecond, the time need to move through 144 pixels #define COMET_COLOR_R 204 // color #define COMET_COLOR_G 255 // color #define COMET_COLOR_B 255 // color #define COMET_BRIGHTNESS_MIN 1 #define COMET_BRIGHTNESS_MAX 200 #define COMET_BRIGHTNESS_HEAD 80 #define FLICKER_MAX 255 #define FLICKER_MIN 100 #define FLICKER_SPEED 800 // in millisecond #define NUMPIXELS 144 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 16 // The ESP32 pin GPIO16 #define CLOCKPIN 17 // The ESP32 pin GPIO17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG); int pos_head = 0; unsigned long cometTimeStart; unsigned long flickerTimeStart; unsigned long progress; unsigned long cometBrightness; unsigned long flickerBrightness; unsigned long TIME_PER_PIXEL; void setup() { Serial.begin(9600); strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(255); TIME_PER_PIXEL = map(1, 0, NUMPIXELS, 0, COMET_SPEED); cometTimeStart = millis(); flickerTimeStart = millis(); } void loop() { progress = millis() - flickerTimeStart; if (progress >= 2 * FLICKER_SPEED) { progress = 2 * FLICKER_SPEED; flickerTimeStart = millis(); } if (progress > FLICKER_SPEED) progress = 2 * FLICKER_SPEED - progress; flickerBrightness = map(progress, 0, FLICKER_SPEED, FLICKER_MIN, FLICKER_MAX); strip.setBrightness(flickerBrightness); progress = millis() - cometTimeStart; if (progress >= TIME_PER_PIXEL) { pos_head++; pos_head %= (COMET_LENGTH_ALL + TWO_COMET_DISTANCE); int offset = COMET_LENGTH_ALL - pos_head; for (int pixel = 0; pixel < NUMPIXELS; pixel++) { int pos_offset = pixel + offset; pos_offset %= (COMET_LENGTH_ALL + TWO_COMET_DISTANCE); if (pos_offset < COMET_LENGTH_BODY) cometBrightness = map(pos_offset, 0, COMET_LENGTH_BODY - 1, COMET_BRIGHTNESS_MIN, COMET_BRIGHTNESS_MAX); else if (pos_offset >= COMET_LENGTH_BODY && pos_offset < COMET_LENGTH_ALL) cometBrightness = map(pos_offset - COMET_LENGTH_BODY + 1, 0, COMET_LENGTH_ALL - COMET_LENGTH_BODY, COMET_BRIGHTNESS_MAX, COMET_BRIGHTNESS_HEAD); else cometBrightness = 0; int r = (COMET_COLOR_R * cometBrightness) >> 8; int g = (COMET_COLOR_G * cometBrightness) >> 8; int b = (COMET_COLOR_B * cometBrightness) >> 8; strip.setPixelColor(pixel, g, r, b); } strip.show(); cometTimeStart = millis(); // new circle } }

※ Notiz:

Für alle anderen LED-Effekte 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!