Arduino Nano - WS2812B LED Strip

De WS2812B RGB LED Strip is een rij LEDs waarbij de kleur en helderheid van elke LED onafhankelijk aangepast kan worden. Deze handleiding leert u hoe u een Arduino Nano gebruikt om de WS2812B RGB LED Strip aan te sturen. We behandelen in detail:

Alle LEDs op de strip kunnen worden bestuurd via slechts één digitale pin van de Arduino Nano.

Hardware Benodigd

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×WS2812B RGB LED-Strip
1×1000uF condensator
1×470Ω weerstand
1×5V voeding adapter
1×DC voeding connector
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

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 van de WS2812B LED Strip

De WS2812B RGB LED Strip heeft drie pinnen:

  • GND pin: moet verbonden worden met GND (0V)
  • VCC pin: moet verbonden worden met 5V van een externe voedingsbron
  • Din pin: is de pin die het besturingssignaal ontvangt en moet verbonden worden met een digitale pin van de Arduino Nano.
WS2812B pinout

※ Notiz:

De volgorde van de pinnen kan verschillen per fabrikant. Het is essentieel altijd de op de LED Strip afgedrukte labels te gebruiken.

Bedradingsschema

Arduino Nano WS2812B RGB LED strip bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe programmeert u voor WS2812B RGB LED Strip

Er zijn twee libraries die gebruikt kunnen worden om een WS2812B LED strip te besturen:

  • Adafruit NeoPixel library
  • FastLED library

In deze handleiding gebruiken we de Adafruit NeoPixel library.

  • Maak een WS2812B object aan.
#define PIN_WS2812B 2 // Arduino Nano pin die verbonden is met WS2812B #define NUM_PIXELS 30 // Het aantal LEDs (pixels) op de WS2812B strip Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialiseer WS2812B.
WS2812B.begin(); // INITIALISEER WS2812B strip object (VERPLICHT)
  • Specificeer de kleur van elke individuele LED (pixel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Pas de helderheid van de hele strip aan.
WS2812B.setBrightness(100); // een waarde van 0 tot 255

※ Notiz:

  • WS2812B.setBrightness() wordt gebruikt om de helderheid van alle pixels op de LED strip met één waarde aan te passen. Om de helderheid van elke individuele pixel in te stellen, kan men de kleurwaarden (R, G, B) per pixel met dezelfde schaalfactor aanpassen.
  • De waarden die ingesteld zijn met WS2812B.setBrightness() en WS2812B.setPixelColor() worden pas toegepast als WS2812B.show() wordt aangeroepen.

Arduino Nano Code

De onderstaande code voert de volgende sequenties uit:

  • Zet de pixels één voor één op groen met een vertraging tussen elke pixel
  • Zet alle pixels uit voor twee seconden
  • Laat alle pixels rood branden voor twee seconden
  • Herhaalt dit proces oneindig
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_WS2812B 2 // The Arduino Nano pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B 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

  • Klik op het Libraries icoon in de linkerbalk van de Arduino IDE.
  • Zoek naar “Adafruit NeoPixel” en selecteer de NeoPixel library van Adafruit.
  • Klik vervolgens op de Installeren knop om de NeoPixel library te installeren.
Arduino Nano ws2812b library
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de knop Uploaden in de Arduino IDE om de code naar de Arduino Nano te verzenden.
  • Bekijk het LED-effect.

※ Notiz:

Voor complexe 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.

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