Arduino Nano ESP32 - Dotstar LED-Streifen

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

Erforderliche Hardware

1×Arduino Nano ESP32
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 Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

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: Taktsignal-Eingang, der das Taktsignal empfängt. Es sollte an einen Pin des Arduino Nano ESP32 angeschlossen werden.
  • DI-Pin: Daten-Pin, der das Steuersignal empfängt. Es sollte an einen Pin des Arduino Nano ESP32 angeschlossen werden.
  • 5V-Pin: Muss mit der 5V einer externen Stromversorgung verbunden werden.
DotStar Pinbelegung

Verdrahtungsdiagramm

Arduino Nano ESP32 DotStar RGB-LED-Streifen Verdrahtungsdiagramm

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

Wie man DotStar RGB-LED-Streifen programmiert

  • Eine DotStar-Bibliothek einbinden
#include <Adafruit_DotStar.h> #include <SPI.h> // DIESEN 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 Pins aus: #define DATAPIN D5 // Der Arduino Nano-Pin #define CLOCKPIN D6 // Der Arduino Nano-Pin Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG);
  • Initialisiert den DotStar
strip.begin(); // Pins für den Ausgang initialisieren strip.setBrightness(255); strip.show(); // Schalte alle LEDs so schnell wie möglich aus
  • Setze die Farbe (r, g, b) jeder einzelnen LED (als Pixel bezeichnet) fest.
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 des LED-Streifens verwendet. Um die Helligkeit für jedes einzelne Pixel festzulegen, können wir den Farbwert skalieren.
  • Die durch DotStar.setBrightness() und DotStar.setPixelColor() festgelegten Werte wirken erst, wenn DotStar.show() aufgerufen wird.

Arduino Nano ESP32-Code

Der unten stehende Code färbt Pixel nacheinander rot, wobei zwischen jedem Pixel eine Verzögerung liegt.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-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 D5 // The Arduino Nano ESP32 pin #define CLOCKPIN D6 // The Arduino Nano ESP32 pin 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

Um mit dem Arduino Nano ESP32 zu beginnen, befolgen Sie diese Schritte:

  • Wenn Sie neu bei Arduino Nano ESP32 sind, lesen Sie das Tutorial zu wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
  • Verdrahten Sie die Bauteile gemäß dem bereitgestellten Diagramm.
  • Schließen Sie das Arduino Nano ESP32-Board über ein USB-Kabel an Ihren Computer an.
  • Starten Sie die Arduino-IDE auf Ihrem Computer.
  • Wählen Sie das Arduino Nano ESP32-Board und den entsprechenden COM-Port aus.
  • Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken
  • 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.
Arduino Nano ESP32 Adafruit DotStar-Bibliothek
  • Sie werden aufgefordert, die Abhängigkeit zu installieren. Klicken Sie auf die Schaltfläche Alle installieren.
Arduino Nano ESP32 Adafruit DotStar Abhängigkeitenbibliothek
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino Nano ESP32 hochzuladen
  • Sehen Sie den LED-Effekt

Arduino Nano ESP32-Code - Kometen-Effekt für LED-Streifen

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

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-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 D5 // The Arduino Nano ESP32 pin #define CLOCKPIN D6 // The Arduino Nano ESP32 pin 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 bezahlten 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!