Arduino - WS2812B LED Strip

In deze tutorial gaan we leren hoe u met Arduino een WS2812B RGB LED strip kunt aansturen. Met slechts één Arduino-pin kunt u:

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×WS2812B RGB LED strip
1×1000uF Condensator
1×470Ω weerstand
1×5V Voeding Adapter
1×DC-Stroomaansluiting
1×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables STEM V3 Starterskit (Arduino inbegrepen)
1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over WS2812B RGB LED Strip

Pinout

De WS2812B RGB LED strip heeft drie pinnen:

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

※ Notiz:

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

Aansluitschema

Arduino WS2812B RGB LED strip Aansluitschema

This image is created using Fritzing. Click to enlarge image

Hoe te Programmeren voor WS2812B RGB LED Strip

Er zijn twee libraries die gebruikt kunnen worden voor het aansturen van WS2812B led strips:

  • Adafruit NeoPixel library
  • FastLED library

Deze tutorial gebruikt de Adafruit NeoPixel library

  • Declareer een WS2812B object
#define PIN_WS2812B 4 // Arduino pin die verbonden is met WS2812B #define NUM_PIXELS 30 // Aantal LEDs (pixels) op de WS2812B strip Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialiseert de WS2812B
WS2812B.begin(); // INITIALISEER 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() geldt voor alle pixels op de LED strip. Voor het instellen van de helderheid per individuele pixel kunt u de kleurwaarde schalen.
  • De waardes ingesteld met WS2812B.setBrightness() en WS2812B.setPixelColor() worden pas zichtbaar nadat WS2812B.show() wordt aangeroepen.

Arduino Code

De onderstaande code doet het volgende:

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

Snelle Stappen

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

※ Notiz:

Voor ingewikkelde LED-effecten bieden wij 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.

※ 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!