RGB LED modul KY-016 je výstupní modul nejen pro Arduino. Tento modul obsahuje vysoce svítivou RGB LED diodu, která má průměr 5 mm. Uvnitř této diody se ve skutečnosti nachází tři samostatné LED diody v barvách červená, zelená a modrá, tedy anglicky RGB (red, green, blue). Optimální hodnoty napájecího napětí pro jednotlivé barvy jsou 1,8 V pro červenou a 2,8 V pro zelenou a modrou. Maximální proudový odběr pro každou barvu je pak 20 mA. Typ zapojení modulu je se společnou katodou neboli „mínusem“.
Pro úspěšné propojení RGB LED modulu a Arduino desky propojíme celkem 4 vodiče. Připojíme „–„ na zem Arduina, R na pin D9, G na pin D10 a B na pin D11. Pro digitální piny lze použít také jiné volné, ale pro využití funkce PWM je nutné vybrat podporované piny. Seznam těchto pinů pro jednotlivé desky si můžete prohlédnout zde.
Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů a vytvoření proměnné, která udává maximální svítivost v celém programu (maximálně je možné nastavit 255). V podprogramu setup nastavíme nejprve všechny piny jako výstupní a poté zavoláme třikrát podprogram test pro jednotlivé barvy. Nekonečná smyčka loop obsahuje tři vnořené for smyčky, které prochází dohromady 5^3=125 kombinací barev, pokaždé s krátkou pauzou pro rozeznání jednotlivých barev. Pod touto smyčkou se ještě v komentáři nachází pro ukázku nastavení základních barev, kdy je vidět, že barvy se „míchají“ pomocí jejich kombinací v RGB spektru. Zmíněný podprogram test obsahuje jako vstup pin zvolené barvy na LED diodě. Na tomto pinu je poté pomocí první for smyčky postupně zvyšována intenzita s krokem 5 až na maximum. Po dosažení maxima se s druhou for smyčkou dostaneme zpět na intenzitu 0, tedy vypnutou LED diodu. Výsledkem je tedy efekt zapulzování dané barvy. Druhý podprogram nastavRGB obsahuje tři vstupní parametry – barvy. Na tyto barvy, respektive jejich piny, je po zavolání tohoto podprogramu nastavena intenzita předaná právě přes zmíněné vstupní parametry. Tím si zjednodušíme kód při nastavování různých barev z RGB spektra.
// RGB LED modul KY-016 // nastavení vstupních pinů #define pinR 9 #define pinG 10 #define pinB 11 // proměnná obsahující maximální svítivost LED diod const int maxSvit = 255; void setup() { // nastavení pinů pro LED jako výstup pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT); // otestování všech barev pomocí podprogramu test test(pinR); delay(500); test(pinG); delay(500); test(pinB); delay(500); } void loop() { // pomocí tří smyček v sobě dojde k postupnému nastavení různých // kombinací barev z RGB spektra, vždy je maximální svítivost // rozdělena na 5 stupňů - celkem tedy 5^3 = 125 kombinací for (int red = 0 ; red < maxSvit; red += maxSvit/5) { for (int green = 0 ; green < maxSvit; green += maxSvit/5) { for (int blue = 0 ; blue < maxSvit; blue += maxSvit/5) { // nastavení barvy na RGB LED modulu podle // aktuálních proměnnýc ve smyčkách nastavRGB(red, green, blue); // krátká pauza mezi barvami delay(200); } } } /* // nastavení červené barvy nastavRGB(maxSvit, 0 , 0 ); // nastavení zelené barvy nastavRGB(0 , maxSvit, 0 ); // nastavení modré barvy nastavRGB(0 , 0 , maxSvit); // nastavení bílé barvy nastavRGB(maxSvit, maxSvit, maxSvit); */ } void test(int ledPin) { // nastavení intenzity na daný pin vzestupně od 0 do hodnoty maxSvit for (int intenzita = 0 ; intenzita <= maxSvit; intenzita += 5) { // řízení jasu pomocí PWM na daném pinu analogWrite(ledPin, intenzita); // krátké zpoždění pro lepší efekt delay(30); } // nastavení intenzity na daný pin sestupně od hodnoty maxSvit do 0 for (int intenzita = maxSvit ; intenzita >= 0; intenzita -= 5) { // řízení jasu pomocí PWM na daném pinu analogWrite(ledPin, intenzita); // krátké zpoždění pro lepší efekt delay(30); } } void nastavRGB(int cervena, int zelena, int modra) { // nastavení všech barev na zvolené intenzity analogWrite(pinR, cervena); analogWrite(pinG, zelena); analogWrite(pinB, modra); }
Po nahrání ukázkového kódu do Arduino desky s připojeným RGB LED modulem dostaneme například tento výsledek:
RGB LED modul KY-016 je zajímavou ukázkou, jak lze pomocí tří pinů Arduina jednoduše řídit RGB LED diodu a vytvářet různé barevné kombinace. Tento modul tedy může sloužit jak pro výukové účely pochopení RGB spektra barev, tak i například jako indikační LED dioda v různých zařízeních, kde ušetříme prostor, protože nahradíme více jednobarevných LED diod jednou RGB LED diodou. Velkou výhodou tohoto modulu jsou přítomné rezistory, které za nás omezují napájecí napětí a proud pro každou z barev při použití 5 V pro napájení. Pokud bychom tedy použili napětí pouze 3,3 Voltu, svítivost všech diod by byla snížena.
Poznámka: u některých modulů se můžete setkat s tím, že nesedí pořadí barev, např. piny R a B jsou prohozené. Toto lze ale jednoduše vyřešit prohozením pořadí vodičů nebo čísel pinů v programu.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html