Arduino RGB LED modul je výstupní modul nejen pro Arduino. Tento modul obsahuje vysoce svítivou SMD LED diodu typu 5050 a pro zjednodušené ovládání se zároveň na modulu nachází čip WS2811. Díky tomuto čipu je možné zapojit do série stovky či tisíce modulů a řídit barvy každého z nich. A to vše pouze pomocí dvou napájecích a jednoho datového vodiče.

Co se týká napájecího napětí, tak pro modul WS2811 je doporučena hodnota +5 V. Proudový odběr se může vyšplhat až na 60 mA při plné svítivosti, kdy každá dioda odebírá přibližně 20 mA. Rozměry modulu jsou 1,8 x 1,3 cm.

Arduino RGB LED modul WS2811

Pro úspěšné propojení RGB LED modulu a Arduino desky propojíme celkem 3 vodiče. Připojíme 5V na +5V Arduina, DI na pin D6 a GND na zem Arduina. Pro digitální pin lze použít také jiný volný pin. Změnu je ale nutné provést také na začátku programu. Pokud budeme chtít zapojit více modulů do řetězce, stačí za sebou propojovat DI a DO piny na modulech a do Arduina připojit pouze pin DI na prvním modulu jako v tomto návodu.

Schéma zapojení Arduino RGB LED modulu WS2811

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu Adafruit_NeoPixel, návod, jak na to je uveden zde.

Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, nastavení čísla propojovacího pinu a nastavení počtu LED modulů. Poté provedeme inicializaci LED modulů z knihovny.

V podprogramu setup je v prvním kroku zahájena komunikace s LED modulem. Jako další je pro ukázku uvedeno postupné nastavení tří základních barev na LED diodě – červené, zelené a modré (RGB). Barvy jsou nastaveny pomocí podprogramu nastavRGB, kdy první tři parametry odpovídají RGB spektru a poslední parametr určuje číslo LED diody, kterou chceme ovládat. Po každé barvě následuje krátká pauza po dobu 500 milisekund.

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.

Zmíněný podprogram nastavRGB má čtyři vstupní parametry – tři základní barvy RGB a číslo ovládané RGB LED diody. Jako první krok si vytvoříme proměnnou pro uložení barvy a následně do ní načteme barevný kód ze zadaných parametrů. V dalším kroku si nastavíme na danou LED diodu její barvu a posledním příkazem aktualizujeme barvy na všech připojených modulech.

// RGB LED modul WS2811

// připojení potřebné knihovny
#include <Adafruit_NeoPixel.h>
// nastavení propojovacího pinu
#define pinDI 6
// nastavení počtu LED modulů
#define pocetLED 1
// inicializace LED modulu z knihovny
Adafruit_NeoPixel rgbWS = Adafruit_NeoPixel(pocetLED, pinDI, NEO_GRB + NEO_KHZ800);

void setup() {
  // zahájení komunikace s LED modulem
  rgbWS.begin();
  // nastavení červené barvy na první LED diodu
  nastavRGB(255, 0  , 0  , 1);
  delay(500);
  // nastavení zelené barvy na první LED diodu
  nastavRGB(0  , 255, 0  , 1);
  delay(500);
  // nastavení modré barvy na první LED diodu
  nastavRGB(0  , 0  , 255, 1);
  delay(500);
  // nastavení černé barvy na první LED diodu = vypnutí
  nastavRGB(0  , 0  , 0  , 1);
  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 255
  // rozdělena na 5 stupňů - celkem tedy 5^3 = 125 kombinací
  for (int red = 0 ; red < 255; red += 255/5) {
    for (int green = 0 ; green < 255; green += 255/5) {
      for (int blue = 0 ; blue < 255; blue += 255/5) {
        // nastavení barvy na RGB LED modulu podle
        // aktuálních proměnnýc ve smyčkách
        nastavRGB(red, green, blue, 1);
        // krátká pauza mezi barvami
        delay(200);
      }
    }
  }
}
void nastavRGB (byte r, byte g, byte b, int cislo) {
  // vytvoření proměnné pro ukládání barev
  uint32_t barva;
  // načtení barvy do proměnné
  barva = rgbWS.Color(r, g, b);
  // nastavení barvy pro danou LED diodu,
  // číslo má pořadí od nuly
  rgbWS.setPixelColor(cislo-1, barva);
  // aktualizace barev na všech modulech
  rgbWS.show();
}

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 zapojení Arduino RGB LED modulu WS2811

Arduino RGB LED modul WS2811 je jednoduše použitelný modul, který lze zapojovat do velmi dlouhých řetězců diod. Zde je pak obrovská výhoda v adresování díky použitému čipu WS2811, kdy můžeme pouze pomocí tří pinů ovládat klidně stovky či tisíce LED diod a nastavovat různé barvy každé z diod jednotlivě. U dlouhých řetězců je ale nutné si dávat pozor na přizpůsobení napájení z ohledu proudového odběru a na pokles napětí na delší vzdálenosti propojení.

 

Seznam použitých komponent:

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

https://dratek.cz/arduino/1192-arduino-rgb-led-modul-ws2811-1456048873.html

FB tw

Další podobné články