Skip to content
ICT Fusion Knowledgebase

Neopixel RGB LED (WS2812B)

Component Neopixel RGB LED (WS2812B)
Type Uitvoer
Functie RGB LED met microcontroller

Introductie

Een RGB LED is een LED die gemaakt is met drie kleuren: rood, groen en blauw. Deze kleuren kunnen worden gebruikt om elke kleur te maken die je wilt.

rgb-led
Een RGB LED

Het probleem met een RGB LED is dat je al drie pinnen van je microcontroller nodig hebt. Dit is niet altijd handig, vooral als je veel LED’s wilt aansluiten.

Een oplossing voor dit probleem is een Neopixel RGB LED. Dit zijn kleine LEDs die ook een microcontroller bevatten. Deze microcontrollers zijn via een draad verbonden en kunnen worden aangestuurd met één enkele pin van de microcontroller.

WS2812B of Neopixel

De officiële naam van deze LED is WS2812B. De term Neopixel wordt vaak gebruikt om deze LED aan te duiden.

Alle vormen en maten

Neopixels zijn in alle vormen en maten beschikbaar.

Vorm Voorbeeld
Los SMD component neopixel-smd
LED Strip neopixel-strip
LED Matrix neopixel-matrix
LED Ring neopixel-ring
LED Bar neopixel-bar

Pinbeschrijving

Een Neopixel RGB LED heeft 4 pinnen:

  • VCC: Voedingsspanning
  • GND: Massa
  • DIN: Data in
  • DOUT: Data out
neopixel-rgb-led
De pinout van een Neopixel RGB LED

Je kan meerdere Neopixel RGB LED’s in serie aansluiten. Je moet dan de DOUT van de vorige LED aansluiten op de DIN van de volgende LED.

neopixel-rgb-led-series
Meerdere Neopixel RGB LED’s in serie

Codevoorbeeld

Om Neopixel RGB LED’s te gebruiken, moet je de Arduino library voor de WS2812B gebruiken. Er zijn verschillende libraries beschikbaar, maar we gaan hier de Adafruit_NeoPixel library gebruiken.

#include <Adafruit_NeoPixel.h>

#define PIN 6
#define NUM_LEDS 10

// Create a NeoPixel object with the number of LEDs and the pin number
// The NEO_GRB + NEO_KHZ800 flag means that the LEDs are GRB color and the clock frequency is 800kHz
Adafruit_NeoPixel pixels(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

// Initialize the NeoPixel object
void setup() {
  pixels.begin();
}

void loop() {  
  pixels.setPixelColor(0, pixels.Color(255, 0, 0)); // LED 0 is rood
  pixels.setPixelColor(1, pixels.Color(0, 255, 0)); // LED 1 is groen
  pixels.setPixelColor(2, pixels.Color(0, 0, 255)); // LED 2 is blauw
  pixels.setPixelColor(3, pixels.Color(255, 255, 0)); // LED 3 is geel
  pixels.setPixelColor(4, pixels.Color(255, 0, 255)); // LED 4 is magenta
  pixels.setPixelColor(5, pixels.Color(0, 255, 255)); // LED 5 is cyan
  pixels.setPixelColor(6, pixels.Color(255, 255, 255)); // LED 6 is wit
  pixels.setPixelColor(7, pixels.Color(128, 128, 128)); // LED 7 is grijs
  pixels.setPixelColor(8, pixels.Color(128, 0, 0)); // LED 8 is donkerrood
  pixels.setPixelColor(9, pixels.Color(0, 128, 0)); // LED 9 is donker groen
  pixels.show();
  delay(1000);
}

Kleuren

De kleuren worden gespecificeerd met een 3-tuple van getallen tussen 0 en 255. De eerste waarde is de rood component, de tweede waarde is de groen component, de derde waarde is de blauw component.

Dit zijn voorbeelden van kleuren:

  • rood: (255, 0, 0)
  • groen: (0, 255, 0)
  • blauw: (0, 0, 255)
  • geel: (255, 255, 0)
  • magenta: (255, 0, 255)

In de microcontroller wordt de kleur opgeslagen als een 32-bits getal. Een 32bits getal kan 4 bytes bevatten. Dat is er één te veel, dus alleen de laatste 24 bits worden gebruikt. De eerste 8 bits worden niet gebruikt.

  • rood: 0x00FF0000
  • groen: 0x0000FF00
  • blauw: 0x000000FF
  • geel: 0x00FFFF00
  • magenta: 0x00FF00FF
uint32_t-color
De kleur wordt opgeslagen als een 32-bits getal.

@ Bronnen