RGB SMD LED modul je výstupní modul nejen pro Arduino. Tento modul obsahuje vysoce svítivou SMD LED diodu typu 5050. Na této diodě 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,78 V pro červenou, 2,38 V pro zelenou a 2,59 V pro modrou. Maximální proudový odběr pro každou barvu je pak 20 mA. Co se týká velikosti celého modulu, tak ta je 20x10 mm. A typ zapojení modulu je se společnou katodou neboli „mínusem“.

RGB SMD LED modul 5050

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.

Schéma zapojení RGB SMD LED modulu 5050

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

// 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 = 100;

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:

Ukázka s RGB SMD LED modulem 5050

RGB SMD LED modul 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. Jako poznámku bych rád uvedl, že v programu jsem pracoval s maximální intenzitou 100 z důvodu jak dostatečné svítivosti LED diod, tak i menšího namáhání, protože výstupní piny Arduina poskytují napětí 5V, ikdyž omezené také na 20mA. Pokud budete chtít použít tento RGB LED modul v zařízení, kde se předpokládá delší doba statického svícení, doporučuji přidat ke každé barvě dle uvedených hodnot napájecího napětí také omezovací sériový rezistor.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

https://dratek.cz/arduino/1404-ky-009-5050-rgb-smd-led-modul-pro-arduino-a-dalsi-1474447748.html

FB tw

Další podobné články