Světelné diody lze použít v jakémkoli projektu. Často nejde jen o pouhou signalizaci stavů, ale také o vizuální efekty.
Jsou zde použity diody RGB, tj. diody LED, které mohou svítit prakticky jakoukoli barvou. V posledních letech zde došlo k průlomu. Jednoduchý test ukáže výhodu programovatelných LED (WS2812).
Objednejte si sadu prvků a začněte se učit v praxi! Kliknutím sem přejdete do obchodu >>
Co jsou programovatelné diody?
Programovatelné diody, někdy označované jako inteligentní diody, mohou být pro mnohé začátečníky záhadným prvkem. Jak je jejich „inteligence“ patrná? Je zapotřebí speciální programovací zařízení? Abych vás nenechal déle v nejistotě, začnu stručnou odpovědí na výše uvedené otázky.
Diody samozřejmě nepotřebují programovací zařízení, jejich programovatelnost spočívá v tom, že každá dioda má vestavěný obvod, se kterým budeme komunikovat. Interní řídicí jednotka nastaví všechny parametry a dioda se od tohoto okamžiku rozsvítí zvolenou barvou.
V tuto chvíli ještě není všem jasné, v čem spočívá tato výhoda oproti běžným LED diodám, ale postupně to budeme zjišťovat. Jako pobídka se nabízí světelný efekt, kterého lze s těmito moderními LED diodami dosáhnout. A to vše pouze s jedním pinem Arduino!
Nejdříve je však na čase promluvit si o běžných RGB LED diodách v praxi!
Hotové sady pro kurzy Forbot
Komponenty pro cvičení z kurzu Arduino (úroveň 2) jsou k dispozici jako hotové sady! Patří sem programovatelné diody, analogové a digitální teploměry, 7-segmentové displeje a senzor pohybu (PIR).
Příprava pracovní stanice pro kurz Arduino
Začněme dvěma technickými aspekty. Někteří čtenáři si již procvičili materiály z první úrovně kurzu Arduino. Ostatní se teprve připojili. Domnívám se však, jak jsem doporučil v předchozím článku, že jsou všechny na podobné úrovni.
Řazení v projektech - dokument
Čím jsou projekty pokročilejší, tím více propojení se vytváří mezi kontaktní deskou a Arduino. To často vede k dezorganizaci a chybám. Proto se sada komponent dodává s univerzální bází Forbot, která nám pomáhá organizovat naše projekty.
Přilepte gumové nožičky na spodní stranu podstavce. Nelepte žádné otvory. Budou se vám hodit, pokud budete chtít k základně připojit další moduly nebo celou věc někde natrvalo upevnit.
Nohy nalepte na stranu, která není označena!
Následně se přilepí kontaktní deska (na spodní straně je samolepicí houba). Nakonec je Arduino přišroubováno. Mezi desku plošných spojů a základnu je nutné umístit plastové distanční podložky. Není nutné použít všechny upevňovací otvory, stačí 2 na úhlopříčce:
Externí napájecí zdroj pro Arduino
V tomto kurzu budeme vytvářet běžně fungující projekty – ne jen dočasné ukázky. Napájení přes USB nebo malou baterii by proto nemělo smysl. Aby se předešlo problémům, obsahují sady také napájecí jednotku, která je připojena k Arduino. Jak vidíte na obrázku výše.
Při programování nebo připojování kabelu USB není nutné připojení odpojovat.
Kromě stabilního napětí nám připojení napájecí jednotky přináší také velmi důležitou výhodu. Na pinu VIN budeme mít přístup k napětí 12V, které využijeme v další části!
Tvar a barva napájecí jednotky ze sad se mohou lišit od těch na fotografiích.
Na funkčnost to však nemá žádný vliv.
RGB LED v praxi - tradiční přístup
V předchozí fázi kurzu Arduino jsme používali obyčejné světelné diody. Každá z nich měla dva spoje (katodu a anodu) a svítila jednou barvou. Díky PWM bylo také možné měnit jejich jas.
V případě problémů se podívejte na doplňující informace o LED a PWM.
LED diody RGB (červená, zelená, modrá) nabízejí mnohem více možností, protože výrobci do nich zabudovávají tři světelné struktury. Červená, zelená a modrá – každou z nich můžeme ovládat samostatně. Zaprvé tak dioda svítí třemi základními barvami a zadruhé je samozřejmě možné barvy míchat.
Součástí dodávky jsou dvě LED diody RGB s matnými čočkami. Takové LED diody nesvítí tak jasně jako diody v průhledných krytech, ale fungují mnohem lépe, pokud chcete mít pěknou směs barev.
Diody RGB jsou k dispozici ve verzích se společnou katodou a anodou. V našem případě použijeme verzi se společnou katodou. To znamená, že nejdelší noha je připojena k GND a ostatní nohy jsou napájeny kladným napětím přes rezistory.
První použití diody RGB
Chcete-li diodu otestovat, zapojte ji podle následujícího schématu:
- červená přes 1k rezistor na pinu 3.
- společná katoda, přímo k zemi.
- zelená přes 1k rezistor na pinu 5.
- modrá přes 1k rezistor na pinu 6.
Při odřezávání nožiček diod a rezistorů byste měli mít na paměti dvě věci:
- Nestříhejte je příliš krátce,
- odříznuté části si ponechte – budou se hodit jako spoje na kontaktní desce.
Je čas na náš první jednoduchý program. Tentokrát chceme vyzkoušet světlo každé barvy zvlášť a nakonec všechny barvy zkombinovat.
#define červená 3
#define zelená 5
#define modrá 6
void setup() {
pinMode(červená, OUTPUT); // Piny, připojené k diodě jako výstupy
pinMode(zelená, OUTPUT);
pinMode(modrá, OUTPUT);
}
void loop() {
digitalWrite(červená, HIGH); // Svítíme jen červeně
delay(2000);
digitalWrite(červená, LOW); // Svítíme jen zeleně
digitalWrite(zelená, HIGH);
delay(2000);
digitalWrite(zelená, LOW); // Svítíme jen modře
digitalWrite(modrá, HIGH);
delay(2000);
digitalWrite(modrá, LOW);
digitalWrite(červená, HIGH); // Zapalujeme každou z nich postupně, aniž bychom zhasli ty předchozí.
delay(2000);
digitalWrite(zelená, HIGH);
delay(2000);
digitalWrite(modrá, HIGH);
delay(2000);
digitalWrite(červená, LOW); // Vypínání všech LED diod
digitalWrite(modrá, LOW);
digitalWrite(zelená, LOW);
delay(2000);
}
V praxi to bude přesně tak, jak očekáváme:
Při současném zapnutí všech barev se přirozeně zobrazí bílá. Pomocí PWM, se kterou jsme se již seznámili, můžeme nastavit intenzitu každé barvy zvlášť. Díky tomu můžeme vytvořit jakoukoli barvu. Než přejdeme k takovému příkladu, připojíme druhou diodu.
Připojení několika (běžných) RGB LED diod
Aby bylo možné plně využít druhou diodu RGB, je nejvhodnější použít tři další kanály PWM. Protože je nepoužíváme k jiným účelům, není to problém.
Tentokrát to tak bude:
- červenápřes 1k rezistor na pinu 9.
- společná katoda, přímo k zemi.
- zelená, přes rezistor 1k, na pinu 10.
- modrá přes 1k rezistor na pinu 11.
Pro představu, jednoduchý program pro testování činnosti obou diod:
//Definice vývodů první diody
#define červená 3
#define zelená 5
#define modrá 6
//Definice vývodů druhé diody
#define červená2 9
#define zelená2 10
#define modrá2 11
void setup() {
pinMode(červená, OUTPUT); //Konfigurace vývodů jako výstupů
pinMode(zelená, OUTPUT);
pinMode(modrá, OUTPUT);
pinMode(červená2, OUTPUT);
pinMode(zelená2, OUTPUT);
pinMode(modrá2, OUTPUT);
}
void loop() {
digitalWrite(červená, HIGH); //Blikání LED diod v různých barvách
digitalWrite(zelená2, HIGH);
delay(1000);
digitalWrite(červená, LOW);
digitalWrite(zelená2, LOW);
digitalWrite(modrá, HIGH);
digitalWrite(červená2, HIGH);
delay(1000);
digitalWrite(modrá, LOW);
digitalWrite(červená2, LOW);
}
Efekt programu spočívá v tom, že diody blikají různými barvami:
Konvenční LED diody RGB - míchání barev
Nyní můžeme přejít k tomu zajímavějšímu, a to k využití skutečnosti, že s takovými diodami můžeme dosáhnout libovolné barvy. Stačí odpovídajícím způsobem generovat signál PWM. Myslím, že všichni už pochopili, o co jde, takže se omezím na jednoduchý příklad. To nám umožní rychleji přejít k programovatelným diodám.
Nejprve program v jeho nejjednodušší verzi. PWM se řídí funkcí analogWrite(Pin, Fill), přičemž fill je hodnota od 0 do 255, což znamená řízení v rozsahu 0-100 %.
Další informace o PWM najdete v 5. části kurzu Arduino Úroveň I.
Napíšeme program, který nastaví dvě barvy každé LED stejně, pro třetí barvu se budeme spoléhat na náhodu. Začněme jednoduchou smyčkou for:
//Definice vývodů první diody
#define červená 3
#define zelená 5
#define modrá 6
//Definice vývodů druhé diody
#define červená2 9
#define zelená2 10
#define modrá2 11
void setup() {
pinMode(červená, OUTPUT); //Konfigurace vývodů jako výstupů
pinMode(zelená, OUTPUT);
pinMode(modrá, OUTPUT);
pinMode(červená2, OUTPUT);
pinMode(zelená2, OUTPUT);
pinMode(modrá2, OUTPUT);
}
void loop() {
int změna = 0;
for (změna = 0; změna < 255; změna++) { //Plynulá změna barev
analogWrite(červená, 0);
analogWrite(zelená, změna);
analogWrite(modrá, 255 - změna);
analogWrite(červená2, změna);
analogWrite(zelená2, 255 - změna);
analogWrite(modrá2, 0);
delay(10); //Krátké zpoždění, aby byl efekt viditelný lidským okem
}
}
Smyčka se provede 255krát. Při každém spuštění se proměnná změna zvýší o jedničku. Tato hodnota je pak definována jako výplň jedné z barev LED a odečtena od výplně druhé barvy, která je ve výchozím nastavení 100 %.
V případě první diody se při každém spuštění smyčky dioda rozsvěcuje stále více a více zeleně a stále slaběji modře. S druhou diodou červená zesílí a zelená zeslábne.
Pro použití třetí barvy použijeme funkci, která vrací náhodné číslo, kterou jsme probrali v 10. části kurzu Arduino, úroveň I. Pro rovnoměrnější efekt je vytvoříme před každou smyčkou. Následující kód by nám měl poskytnout dvě LED diody s náhodnými změnami barev.
//Definice vývodů první diody
#define červená 3
#define zelená 5
#define modrá 6
//Definice vývodů druhé diody
#define červená2 9
#define zelená2 10
#define modrá2 11
void setup() {
pinMode(červená, OUTPUT); //Konfigurace vývodů jako výstupů
pinMode(zelená, OUTPUT);
pinMode(modrá, OUTPUT);
pinMode(červená2, OUTPUT);
pinMode(zelená2, OUTPUT);
pinMode(modrá2, OUTPUT);
randomSeed(analogRead(A5)); //Semeno pro generátor náhodných čísel
}
void loop() {
int změna = 0;
int nahodnaZmena = random(255);
for (změna = 0; změna < 255; změna++) { //Plynulá změna barev
analogWrite(červená, nahodnaZmena);
analogWrite(zelená, změna);
analogWrite(modrá, 255 - změna);
analogWrite(červená2, změna);
analogWrite(zelená2, 255 - změna);
analogWrite(modrá2, nahodnaZmena);
delay(10);
}
}
Je to v pořádku, ale mohlo by to být lepší – po provedení smyčky for se náhle vrátíme na začátek, což vede k nevzhlednému barevnému skoku. Aby se to zlepšilo, musely by se barvy plynule měnit i v opačném směru.
Tentokrát navrhnu nepříliš sofistikované řešení – zkopíroval jsem smyčku a změnil podmínku tak, aby se podruhé provedla „pozpátku“. To samozřejmě není příliš příjemné řešení, ale v současné době má program provádět pouze toto blikání, takže si můžete dovolit jej takto naprogramovat.
Konečný kód příkladu vypadá následovně:
//Definice vývodů první diody
#define červená 3
#define zelená 5
#define modrá 6
//Definice vývodů druhé diody
#define červená2 9
#define zelená2 10
#define modrá2 11
void setup() {
pinMode(červená, OUTPUT); //Konfigurace vývodů jako výstupů
pinMode(zelená, OUTPUT);
pinMode(modrá, OUTPUT);
pinMode(červená2, OUTPUT);
pinMode(zelená2, OUTPUT);
pinMode(modrá2, OUTPUT);
randomSeed(analogRead(A5)); //Semeno pro generátor náhodných čísel
}
void loop() {
int změna = 0;
int nahodnaZmena = random(255);
for (změna = 0; změna < 255; změna++) { //Plynulá změna barev
analogWrite(červená, nahodnaZmena);
analogWrite(zelená, změna);
analogWrite(modrá, 255 - změna);
analogWrite(červená2, změna);
analogWrite(zelená2, 255 - změna);
analogWrite(blau2, nahodnaZmena);
delay(10);
}
for (změna = 255; změna > 0; změna--) { //Plynulá „zpětná“ změna barvy
analogWrite(červená, nahodnaZmena);
analogWrite(zelená, změna);
analogWrite(modrá, 255 - změna);
analogWrite(červená2, změna);
analogWrite(zelená2, 255 - změna);
analogWrite(modrá2, nahodnaZmena);
delay(10);
}
}
Účinky v praxi si můžete prohlédnout na následující animaci:
Vytvořili jsme náhodně svítící gadget, který by mohl mít zajímavý vizuální efekt, kdyby v něm bylo více LED diod. Zde vzniká problém, protože přidání každé další LED diody dříve vyžadovalo tři nové kanály PWM. Připojením dvou RGB LED diod jsme již vyčerpali možnosti našeho Arduino UNO (6 kanálů).
V případě použití složitějších programů a nových elektronických součástek by bylo možné přidat několik dalších diod. Nicméně program a schéma zapojení by se velmi, velmi rychle zkomplikovaly.
Co kdyby se všechny LED diody daly ovládat pomocí menšího počtu připojení? Zde samozřejmě přicházejí ke slovu programovatelné LED diody, které budeme od nynějška používat.
Co je programovatelná dioda?
Technologie LED je stále oblíbenější. Jednobarevné podsvícení pomocí LED diod již není nic neobvyklého. Pásky RGB LED se často používaly ve všech druzích gadgetů a světelných reklam. Ovládání každé jednotlivé diody by však bylo obtížné.
Z tohoto důvodu byly vyvinuty speciální obvody, které se instalují vedle LED diod. Ty umožňovaly snadné ovládání barvy a jasu několika LED diod. Obliba tohoto řešení vedla k vývoji čipů WS2812. To znamená, že kombinace RGB diodového ovladače s… RGB LED. Vše v jednom krytu – obvykle s technologií SMD (povrchová montáž).
Takto vznikly programovatelné LED diody RGB. Díky digitální komunikaci můžeme ovládat stovky diod jedinou signální linkou!
Předpokládám také, že používáte hotový RGB modul, takže vynechávám aspekty, které jsou důležité při použití jednotlivých diod. Sady součástek obsahují pás 8 takových diod. Každý z nich odebírá až 30 mA, celkem tedy asi 240 mA. Pásek může být napájen napětím 4 V až 7 V.
V závislosti na variantě může mít 3 nebo 4 připojení. Na tom nezáleží. U některých modulů je zem vyvedena na dvou pinech.
Tyto diody LED nejsou pouhým okem nijak zvlášť patrné. Teprve po přiblížení uvidíte to nejzajímavější. Ovladač a jednotlivé konstrukce jsou dobře viditelné.
Připojení diody WS2812
Bez ohledu na počet diod musíme do modulu vždy vložit tři vodiče:
- Řídicí signál, obvykle označovaný jako: DIN, Data IN,
- kladné přípojnice (4-7 V), obvykle označené jako: VIN, V nebo znaménko +,
- systémové hmoty, která se obvykle označuje GND nebo -.
Zkontrolujte pořadí přiřazení pinů přímo na modulu nebo v dokumentaci výrobce desky!
Na trhu je mnoho podobně vypadajících modulů a nemohu zaručit, že jsou spoje vždy uspořádány stejným způsobem. Proto z bezpečnostních důvodů neposkytuji montážní plán – pracuji s označením signálů.
Modul namontujeme na kontaktní desku. Následně připojíme zem (dvě, jsou-li přítomny) k zemi obvodu a přivedeme 5 V na kladnou přípojnici. Paralelně k napájecím vývodům připojíme elektrolytický kondenzátor. Při tomto počtu diod postačí 100uF.
Poté připojíme řídicí signál. V případě našeho cvičení to bude pin A0. V souladu s doporučeními výrobce to přímo neděláme. Mezi připojení Arduino a diodové vedení bychom měli vložit rezistor v rozsahu 300-500R. V našem případě zapojíme paralelně dva rezistory 1k (výsledkem je 500R).
Uspořádání na kontaktní desce je následující:
Komunikace s diodami - hotová knihovna
Komunikace se samotnými diodami probíhá prostřednictvím speciálního jednovodičového rozhraní. Díky připravené knihovně však nemusíme řešit technické problémy.
V případě potřeby bude na stránkách Forbot zveřejněn odpovídající článek.
Nyní použijeme populární knihovnu NeoPixel od společnosti Adafruit. Samozřejmě je musíme nejprve nainstalovat, což je proces, který se liší v závislosti na zdrojovém kódu kompilátoru.
Při použití prostředí Arduino IDE, které je staženo z webu Arduino.cc.
Vyberte z nabídky:
Návrh > Integrace knihovny > Správa knihoven
Pak do vyhledávacího pole zadejte Adafruit NeoPixel, vyberte příslušnou knihovnu ze seznamu a nainstalujte ji:
Při použití prostředí Arduino IDE, které je ke stažení na stránkách Arduino.org.
Knihovnu NeoPixel stáhneme z GitHub, stačí použít tlačítko: Clone nebo Download:
Přejmenováváme archiv z Adafruit_NeoPixel-master na Adafruit_NeoPixel.
Následně vybereme v prostředí Arduino IDE:
Import návrhu knihovny >… > Přidat knihovnu…
Vyberte právě stažený archiv (nerozbalujte jej) a klikněte na tlačítko Otevřít. Knihovna by se měla po nějaké době přidat do našeho IDE. Nejjednodušší způsob, jak to zkontrolovat, je vybrat možnost :
Příklady souborů >
V dolní části by se měla zobrazit karta s ukázkovými programy od společnosti NeoPixel:
Základní funkce knihovny NeoPixel
Pokud je instalace úspěšná, můžeme se pustit do psaní prvního programu. Každý program, který používá naše diodové řádky, musí obsahovat odkaz na knihovnu a její inicializaci. V praxi to vypadá následovně:
#include //Přidání knihovny
//Konfigurace pásky
Adafruit_NeoPixel páska = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800);
void setup() {
páska.begin(); //Inicializace
páska.show();
}
void loop() {
}
Nejdůležitější je osvětlený pásek. Zde vytvoříme objekt s názvem pásek, na který se budeme odkazovat později. Dále zadáme do závorek informace o modulu.
První dva parametry jsou nejdůležitější. V tomto případě 8 znamená počet diod v pásku a A0 samozřejmě odkazuje na pin Arduino, ke kterému jsme jej připojili. Posledním parametrem je informace o verzi samotných diod. V tuto chvíli si s tím nemusíme dělat starosti.
Jako příklad můžeme připojit diody na jiný pin, např. 3, a místo pásku nazvat celou věc světelným hadem. Konfigurace by pak vypadala takto:
Adafruit_NeoPixel svetelny_had= Adafruit_NeoPixel(8, 3, NEO_GRB + NEO_KHZ800);
Zůstaňme však u první verze inicializace a pokračujme v prvním programu.
První test programovatelné diody
Máme naprostou volnost v ovládání LED diod. Každému z nich můžeme přiřadit jinou barvu a jas. Za tímto účelem je musíme oslovit v následující podobě:
pásky.setPixelColor(dioda, barva);
Prvním parametrem, který zadáváme, je číslo diody (počínaje nulou). Druhým parametrem je barva. Jak je v počítačovém světě obvyklé, musíme to vyjádřit jako velké číslo.
Pro nás lidi je mnohem jednodušší, když můžeme barvu popsat třemi menšími čísly. Každé z těchto čísel pak může představovat jas složky, tj. můžeme vypočítat jas pro červenou, zelenoua modrou samostatně. Na pomoc nám přichází další konstrukce: Stripes.colour(0, 0, 0).
V praxi se používá takto:
- pásek.setPixelColor(0, pásek.Colour(255, 0, 0)) – Dioda 1 se rozsvítí červeně
- pásek.setPixelColor(0, pásek.Colour(0, 255, 0)) – Dioda 1 se rozsvítí zeleně
- pásek.setPixelColor(0, pásek.Colour(0, 0, 255)) – Dioda 1 svítí modře
- pásek.setPixelColor(6, pásek.Colour(100, 0, 255)) – Dioda č. 7 se rozsvítí co nejjasněji v režimu modře a slaběji v barvě červené.
Podívejme se, zda se nám podaří zprovoznit první diodu:
#include //Přidání knihovny
//Konfigurace pásku
Adafruit_NeoPixel pásek = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800);
void setup() {
pásek.begin(); //Inicializace
pásek.show();
pásek.setPixelColor(0, pásek.Color(0, 255, 0)); //Dioda LED 1 svítí zeleně
}
void loop() {
}
Příkaz jsem vyvolal ve funkci nastavení, protože jsem chtěl LED diodu zapnout pouze jednou. Nebylo nutné to dělat ve smyčce. Po provedení programu…. ale nic se neděje! Proč tomu tak je?
Kdykoli je odeslán příkaz nebo skupina příkazů, které by měly být viditelné na LED diodách, měl by být proveden příkaz pásek.show();
Správná verze programu, ve které je první LED dioda již 100% zelená, vypadá následovně:
V praxi to vypadá následovně:
#include //Přidání knihovny
//Konfigurace pásky
Adafruit_NeoPixel pásek = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800);
void setup() {
pásek.begin(); //Initialisierung
pásek.show();
pásek.setPixelColor(0, pásek.Color(0, 255, 0)); //Dioda LED 1 svítí zeleně
pásek.show();
}
void loop() {
}
Pomocí těchto několika funkcí budeme moci od nynějška vytvářet zajímavé vizuální efekty. V tuto chvíli vytvoříme dva, které se nám budou hodit v dalších částech, kdy spustíme jednoduchý alarm. Existují dva typy signalizace, podobně jako u policejních světel.
Indikátor alarmu
První verze signalizačního zařízení bude velmi jednoduchá. Chceme, aby všechny diody LED svítily střídavě červeně nebo modře. Samozřejmě nebudeme ovládat každou z nich ručně, ale použijeme dvě smyčky for. Úkolem první smyčky je nastavit všechny LED diody na červenou:
int i = 0;
for (i = 0; i < 8; i++) {
pásek.setPixelColor(i, pásek.Color(255, 0, 0)); //Dioda LED č. i svítí zvolenou barvou.
}
pásek.show();
Chtěl bych, aby LED diody současně měnily barvu. Z tohoto důvodu byla funkce pásek.show() vyvolána až po provedení smyčky.
Pokud nechápete, o čem je funkce show(), spusťte si tento příklad ve volném čase a pokračujte dál. U druhého indikátoru alarmu postupujeme opačně a rozdíl bude jasně patrný.
Aby náš indikátor alarmu blikal rychle, musíme přidat druhou barvu a krátké zpoždění. Program, který tento příklad realizuje, vypadá takto:
#include //Přidání knihovny
//Konfigurace pásky
Adafruit_NeoPixel pásek = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800);
void setup() {
pásek.begin(); //Inicializace
pásek.show();
}
void loop() {
int i = 0;
for (i = 0; i < 8; i++) {
pásek.setPixelColor(i, pásek.Color(255, 0, 0)); //Dioda LED č. i svítí vybranou barvou
}
pásek.show();
delay(250);
for (i = 0; i < 8; i++) {
pásek.setPixelColor(i, pásek.Color(0, 0, 255)); //Dioda LED č. i svítí vybranou barvou
}
pásek.show();
delay(250);
}
Účinek poplachového signalizačního zařízení v praxi je vidět níže:
Indikátor alarmu - druhá verze
Tentokrát by se měl indikátor alarmu skládat ze 4 červených a 4 modrých LED diod. Kromě toho by se neměly rozsvítit všechny najednou, ale jedna po druhé. Chcete-li to provést v rámci smyčky, zavolejte funkci show() a vložte zpoždění.
for (i = 0; i < 8; i++) {
pásek.setPixelColor(i, pásek.Color(0, 0, 255)); //Dioda LED č. i svítí vybranou barvou
pásek.show();
delay(100);
}
Pokud takovou smyčku spustíte, každá dioda postupně zmodrá. Nyní program rozšíříme tak, aby se měnila barva – k tomu samozřejmě potřebujeme pouze jednu podmínku. V nejjednodušší podobě vypadá takto:
#include //Přidání knihovny
//Konfigurace pásky
Adafruit_NeoPixel pásek = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800);
void setup() {
pásek.begin(); //Inicializace
pásek.show();
}
void loop() {
int i = 0;
for (i = 0; i < 8; i++) {
if (i < 4) {
pásek.setPixelColor(i, pásek.Color(255, 0, 0)); //Dioda LED č. i svítí vybranou barvou
} else {
pásek.setPixelColor(i, pásek.Color(0, 0, 255)); //Dioda LED č. i svítí vybranou barvou
}
pásek.show();
delay(100);
}
pásek.clear();
}
Všimněte si předposledního řádku programu – jedná se o novou funkci pásek.clear(), která je zodpovědná za vymazání celého pásu, jinými slovy za vypnutí všech LED diod. Bez tohoto příkazu by se náš efekt provedl pouze jednou. V praxi probíhá výše uvedený program následovně:
Výše popsané účinky byly pouze úvodem. Diody budeme používat stále pokročilejšími způsoby, jak budeme sledovat příklady v dalších článcích. Jako domácí úkol bych vás rád vyzval k experimentování s vlastními efekty.
Doporučuji také prohlédnout si ukázkové programy obsažené v knihovně. Nezapomeňte je však odpovídajícím způsobem nakonfigurovat! Tyto programy naleznete v části:
Soubor > Příklady > Adafruit NeoPixel
Jak jeden z těchto programů funguje, se můžete podívat v následujícím videu:
Kdy se jedná o běžné diody a kdy o programovatelné diody?
Někteří čtenáři si pravděpodobně kladou otázku: Měli bychom tedy „zapomenout“ na tradiční RGB LED diody? Podle mého názoru ne. Pokud chceme naše zařízení vybavit jediným ovladačem, může být vhodnější normální dioda.
Pokud však projekt zahrnuje použití několika RGB LED, měl by být bez váhání použit WS2812. To výrazně zjednodušuje hardware i programování.
Shrnutí
Hlavním cílem této části bylo v praxi zjistit, jak se liší běžné diody od diod se zabudovanými ovladači. Dodávaný diodový pásek nás bude provázet většinou následujících dílů. Mimo jiné bude sloužit jako signální světlo v případě poplachu a také jako stupnice pro naše teploměry.
V další části doplníme signální světlo jednoduchou poplašnou sirénou, která vydává odstrašující zvuk.
Objednejte si sadu prvků a začněte se učit v praxi! Kliknutím sem přejdete do obchodu >>