ESP32 - WS2812B LED Strip

In deze tutorial gaan we leren hoe u een ESP32 kunt gebruiken om een WS2812B RGB LED strip aan te sturen. Met slechts één ESP32-pin:

Over WS2812B RGB LED Strip

Pinout

De WS2812B RGB LED Strip heeft drie pinnen:

  • GND pin: moet verbonden worden met GND (0V)
  • VCC pin: moet aangesloten worden op 5V van een externe voeding
  • Din pin: is de pin die het besturingssignaal ontvangt. Deze moet verbonden worden met een pin van de ESP32.
WS2812B Pinout

※ Notiz:

De volgorde van de pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de LED Strip zijn gedrukt.

Bekabelingsschema

ESP32 WS2812B RGB LED strip bekabelingsschema

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

Hoe programmeer je de WS2812B RGB LED Strip

Er zijn twee libraries die u kunt gebruiken om een WS2812B led strip te besturen:

  • Adafruit NeoPixel library.
  • FastLED library.

In deze tutorial gebruiken we de Adafruit NeoPixel library.

  • Declareer een WS2812B-object
#define PIN_WS2812B 4 // ESP32 pin die verbonden is met WS2812B #define NUM_PIXELS 30 // Het aantal LEDs (pixels) op de WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialiseer de WS2812B
WS2812B.begin(); // INITIALISEER het WS2812B strip object (VERPLICHT)
  • Stel de kleur in van elke individuele LED (pixel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Stel de helderheid in van de hele strip.
WS2812B.setBrightness(100); // een waarde van 0 tot 255

※ Notiz:

  • WS2812B.setBrightness() past de helderheid aan voor alle pixels op de LED strip. Om de helderheid voor elke individuele pixel aan te passen, kunt u de kleurwaardes schalen.
  • De waarden ingesteld door WS2812B.setBrightness() en WS2812B.setPixelColor() worden pas toegepast wanneer WS2812B.show() wordt aangeroepen.

ESP32 Code

De onderstaande code doet het volgende:

  • Zet de pixels één voor één groen met een vertraging tussen elke pixel
  • Zet alle pixels gedurende twee seconden uit
  • Zet alle pixels tegelijkertijd rood aan gedurende twee seconden
  • Herhaalt dit proces oneindig
/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 }

Snelle Stappen

  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “Adafruit NeoPixel” en vind vervolgens de WS2812B-library van Adafruit.
  • Klik op de Installeren-knop om de NeoPixel library te installeren.
ESP32 neopixel library
  • Kopieer bovenstaande code en open deze met de Arduino IDE.
  • Klik op de Uploaden-knop in de Arduino IDE om de code naar de ESP32 te uploaden.
  • Bekijk het LED-effect

※ Notiz:

Voor complexe LED-effecten bieden we ook een betaalde programmeerservice

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap begeleiden.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!