ESP32 - RGB LED

Deze tutorial legt uit hoe u een RGB LED kunt aansturen zodat deze elke gewenste kleur kan weergeven met behulp van de ESP32.

Over RGB LED

Een RGB LED kan elke kleur uitstralen door de drie basiskleuren rood, groen en blauw te mengen. Een enkele RGB LED bestaat uit 3 LED's: rood, groen en blauw. Deze drie LED's zijn verpakt in één behuizing, zodat het lijkt alsof het één enkele LED is.

RGB LED Pinout

RGB LED heeft vier pinnen:

  • R (red) pin: regelt het rode kleurelement
  • G (green) pin: regelt het groene kleurelement
  • B (blue) pin: regelt het blauwe kleurelement
  • Common (Cathode-) pin: sluit deze pin aan op GND (0V)
RGB LED Pinout

Om de RGB LED op de ESP32 aan te sluiten, moeten we stroombeperkende weerstanden toevoegen. Dit maakt het aansluiten soms wat ingewikkelder. Gelukkig kunnen we een RGB LED module gebruiken die al ingebouwde stroombeperkende weerstanden bevat.

Een RGB LED Module heeft ook vier pinnen:

  • Common (Cathode-) pin: moet verbonden worden met GND (0V)
  • R (red) pin: wordt gebruikt om rood aan te sturen
  • G (green) pin: wordt gebruikt om groen aan te sturen
  • B (blue) pin: wordt gebruikt om blauw aan te sturen
RGB LED Module Pinout

※ Notiz:

Op basis van de gemeenschappelijke pin zijn er twee soorten LED's: common anode en common cathode. Deze tutorial gebruikt een common cathode LED.

Hoe werkt de RGB LED

In fysische termen is een kleur een combinatie van drie kleurelementen: Rood (R), Groen (G) en Blauw (B). Elk kleurelement heeft een waarde van 0 tot 255. Door de combinaties van deze drie kleurelementen ontstaan er in totaal 256 x 256 x 256 mogelijke kleuren.

Als we PWM-signalen (Pulse Width Modulation) sturen naar de R, G en B pinnen, toont de RGB LED een kleur die overeenkomt met de duty cycle waardes van deze PWM-signalen. Door de duty cycle aan te passen (van 0 tot 255), kan de RGB LED elke gewenste kleur weergeven. De kleurwaarden van Rood (R), Groen (G) en Blauw (B) komen overeen met de PWM duty cycle op de R-, G- en B-pinnen respectievelijk.

Bekabelingsschema tussen RGB LED en ESP32

  • Bekabelingsschema voor ESP32 aangesloten op een RGB LED
ESP32 RGB LED wiring diagram

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

  • Bekabelingsschema voor ESP32 aangesloten op een RGB LED module
ESP32 RGB LED module wiring diagram

This image is created using Fritzing. Click to enlarge image

Hoe RGB LED aan te sturen

Laten we aannemen dat we de kleur #00979D op de RGB LED willen weergeven, dan kunnen we de volgende stappen volgen:

  • Zoek de kleurcode. Tips:
  • Converteer de kleurcode naar R, G, B waarden met behulp van de tool van w3schools. Noteer deze waarden. In dit geval: R = 0, G = 151, B = 157
RGB LED color picker
  • Definieer de ESP32-pinnen die verbonden worden met de R, G en B pinnen. Bijvoorbeeld:
#define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21
  • Stel deze ESP32-pinnen in als output
pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT);
  • Stuur de LED aan om die kleur uit te zenden (#00979D → R = 0, G = 151, B = 157)
analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 151); analogWrite(PIN_BLUE, 157);

ESP32 - RGB LED Voorbeeldcode

De onderstaande code verandert de kleur van de LED achtereenvolgens tussen de volgende kleuren:

  • #00C9CC (R = 0, G = 201, B = 204)
  • #F7788A (R = 247, G = 120, B = 138)
  • #34A853 (R = 52, G = 168, B = 83)
/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-rgb-led */ #define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21 void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // kleurcode #00C9CC (R = 0, G = 201, B = 204) analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 201); analogWrite(PIN_BLUE, 204); delay(1000); // kleur 1 seconde aanhouden // kleurcode #F7788A (R = 247, G = 120, B = 138) analogWrite(PIN_RED, 247); analogWrite(PIN_GREEN, 120); analogWrite(PIN_BLUE, 138); delay(1000); // kleur 1 seconde aanhouden // kleurcode #34A853 (R = 52, G = 168, B = 83) analogWrite(PIN_RED, 52); analogWrite(PIN_GREEN, 168); analogWrite(PIN_BLUE, 83); delay(1000); // kleur 1 seconde aanhouden }

Wanneer u veel kleuren gebruikt, kunnen we de code inkorten door een functie te maken:

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-rgb-led */ #define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21 void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // kleurcode #00C9CC (R = 0, G = 201, B = 204) setColor(0, 201, 204); delay(1000); // kleur 1 seconde aanhouden // kleurcode #F7788A (R = 247, G = 120, B = 138) setColor(247, 120, 138); delay(1000); // kleur 1 seconde aanhouden // kleurcode #34A853 (R = 52, G = 168, B = 83) setColor(52, 168, 83); delay(1000); // kleur 1 seconde aanhouden } void setColor(int R, int G, int B) { analogWrite(PIN_RED, R); analogWrite(PIN_GREEN, G); analogWrite(PIN_BLUE, B); }

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