Arduino - WS2812B LED-Streifen

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

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×WS2812B RGB LED-Streifen
1×1000uF Capacitor
1×470Ω Resistor
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino 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 einer externen 5-V-Stromversorgung verbunden werden
  • DIN-Pin: ist der Pin, der das Steuersignal empfängt. Er sollte mit einem Arduino-Pin verbunden werden
WS2812B Pinbelegung

※ Notiz:

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

Verdrahtungsdiagramm

Arduino WS2812B RGB-LED-Streifen Verdrahtungsdiagramm

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

Wie man für WS2812B RGB-LED-Streifen programmiert

Es gibt zwei Bibliotheken, die verwendet werden können, um einen WS2812B-LED-Streifen zu steuern:

  • Adafruit NeoPixel-Bibliothek.
  • FastLED-Bibliothek.

Dieses Tutorial wird die Adafruit NeoPixel-Bibliothek verwenden.

  • Deklariere ein WS2812B-Objekt
#define PIN_WS2812B 4 // Arduino-Pin, der mit WS2812B verbunden ist #define NUM_PIXELS 30 // Die Anzahl der LEDs (Pixel) am WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialisiert den WS2812B
WS2812B.begin(); // INITIALISIERE WS2812B-Streifenobjekt (ERFORDERLICH)
  • Lege die Farbe jeder einzelnen LED fest (als Pixel bezeichnet).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Stell 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 jedes einzelne Pixel einzustellen, können wir den Farbwert skalieren.
  • Die durch WS2812B.setBrightness() und WS2812B.setPixelColor() gesetzten Werte treten erst in Kraft, wenn WS2812B.show() aufgerufen wird.

Arduino-Code

Der folgende Code tut Folgendes:

  • Schalte die Pixel nacheinander auf Grün, mit einer Verzögerung zwischen jedem Pixel
  • Schalte alle Pixel für zwei Sekunden aus
  • Schalte alle Pixel gleichzeitig für zwei Sekunden rot
  • Wiederhole den oben beschriebenen Prozess unendlich oft
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN_WS2812B 4 // Arduino pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B #define DELAY_INTERVAL 250 // 250ms pause between each pixel 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(); // send the updated pixel colors to the WS2812B hardware. delay(DELAY_INTERVAL); // pause between each pixel } // turn off all pixels for two seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // 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(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // on time // turn off all pixels for one seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // off time }

Schnelle Schritte

  • Gehe zum Libraries-Symbol in der linken Leiste der Arduino IDE.
  • Suche “NeoPixel NeoPixel”, und finde dann die WS2812B-Bibliothek von Adafruit.
  • Klicke auf den Install-Button, um die NeoPixel-Bibliothek zu installieren.
Arduino NeoPixel-Bibliothek
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den Arduino hochzuladen.
  • Sehen Sie sich den LED-Effekt an.

※ Notiz:

Für jeden komplizierten LED-Effekt bieten wir den kostenpflichtigen Programmierdienst

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!