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.
| 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
| 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.
| 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
| De kleur wordt opgeslagen als een 32-bits getal. |