RGB-LED
Een RGB-LED is een lampje dat in elke kleur kan branden. Hij heeft drie kanalen: rood (R), groen (G) en blauw (B). Door die te mengen krijg je alle kleuren.
Materiaal
- Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy Shield
- RGB-LED-moduleMet vier pinnen
Een RGB-LED-module heeft vier pinnen. Op het printje staan ze als -, R, G en B; bij sommige modules in een andere volgorde, dus kijk naar de letters.
Controlevraag
Hoeveel pinnen heeft deze RGB-LED-module nodig op de microcontroller?
Antwoord
Vier in totaal: één GND-pin en drie digitale pinnen (voor R, G en B). De drie kleurpinnen moeten PWM ondersteunen, anders kun je geen tussenkleuren maken.
Aansluiten
Pinnen van de RGB-LED
- Min (-): GND
- R: rood kanaal
- G: groen kanaal
- B: blauw kanaal
Aansluiten op het shield

Op het shield heeft elke pin van de Nano een eigen rijtje van drie pinnen. De binnenste, naast de Nano, is de pin zelf (bijvoorbeeld D7). De middelste is 3V3 en de buitenste is GND. Sluit een onderdeel aan op het rijtje van zijn pin: dan zitten signaal, 3V3 en GND naast elkaar, en past er een stekker van drie pinnen op. In het schema zegt de legenda welke draad op welke pin komt.
- R op het rijtje van D10: R op de binnenste rij, de min op de buitenste rij (GND)
- G met een losse draad aan de pin D9 (binnenste rij)
- B met een losse draad aan de pin D6 (binnenste rij)
Die drie pinnen hebben PWM (op het shield staat er een ~ bij). In deze
volgorde loopt geen draad over een andere: op de module zit R links, op het
shield zit D10 links van D9 en D6.
Let op
Pinnen D2, D3, D4 en D11 zijn bezet zodra je het motor shield gebruikt.
Daarom gebruikt dit voorbeeld D10, D9 en D6, en niet de bezette D11.
Controlevraag
Wat gebeurt er als je een kleur-pin van de RGB-LED aan een pin zonder PWM sluit?
Antwoord
Dan kun je dat kanaal alleen aan of uit zetten, niet half. Je krijgt dus geen mooie tussenkleuren of dimmend gedrag.
Code
Met de leaphymicropython-bibliotheek heb je één klasse: RGBLed.
Voorbeeld
from time import sleep
from leaphymicropython.actuators.rgbled import RGBLed
led = RGBLed("D10", "D9", "D6")
while True:
led.set_color(255, 0, 0) # rood
sleep(1)
led.set_color(0, 0, 0) # uit
sleep(1)
Uitleg
led = RGBLed("D10", "D9", "D6")
Dit zijn de pinnen voor rood, groen, blauw: hier D10, D9 en D6. Schrijf de namen tussen aanhalingstekens. Een kaal getal als 9 betekent voor MicroPython iets anders: het nummer van een aansluiting op de chip (GPIO9), en die zit niet op de pinnen van het bord.
led.set_color(red, green, blue)
Elke kleurwaarde ligt tussen 0 (uit) en 255 (maximaal). Door te mengen krijg je alle kleuren:
(255, 0, 0)= rood(0, 255, 0)= groen(0, 0, 255)= blauw(255, 255, 0)= geel(255, 255, 255)= wit(0, 0, 0)= uit
Opdracht: regenboog
Laat de LED achter elkaar rood, geel, groen, cyaan, blauw en paars laten zien, elk 1 seconde.
Oplossing
from time import sleep
from leaphymicropython.actuators.rgbled import RGBLed
led = RGBLed("D10", "D9", "D6")
kleuren = [
(255, 0, 0), # rood
(255, 255, 0), # geel
(0, 255, 0), # groen
(0, 255, 255), # cyaan
(0, 0, 255), # blauw
(255, 0, 255), # paars
]
while True:
for r, g, b in kleuren:
led.set_color(r, g, b)
sleep(1)