IoT: LED dioda
(→Částečné rozžíhání: div) |
(RGB dioda) |
||
Řádka 109: | Řádka 109: | ||
# Během pěti sekund se LEDka rožne, sekundu zůstane rožnutá na maximum, 5 sekund se bude zhasínat a sekundu zůstane zhasnutá | # Během pěti sekund se LEDka rožne, sekundu zůstane rožnutá na maximum, 5 sekund se bude zhasínat a sekundu zůstane zhasnutá | ||
# LEDka bude sekundu zhaslá, sekundu na poloviční jas a sekundu na maximální jas | # LEDka bude sekundu zhaslá, sekundu na poloviční jas a sekundu na maximální jas | ||
+ | |||
+ | = RGB LEDka = | ||
+ | |||
+ | == Popis == | ||
+ | |||
+ | RGB LEDka má v sobě jakoby 3 LEDky - Red, Green, Blue | ||
+ | Má 3 katody (+) a jednu anodu (-) [[https://ampul.cz/image/cache/catalog/image/data/led-dioda-katoda-600x600-product_popup.jpg schéma]] | ||
+ | |||
+ | Abychom ji mohli rozsvítit do námi požadované barvy, musíme něco vědět o [[https://www.w3schools.com/colors/colors_rgb.asp RGB mobelu]] | ||
+ | Teoreticky je 16milionů 255natřetí možných kombinací, jak může svítit. | ||
+ | |||
+ | Budeme chtít zelenou - tak přivedeme napětí ke katodě která je spojena přechodem pn emitujícím zelené světlo. | ||
+ | |||
+ | == Zapojení == | ||
+ | |||
+ | GPIO pin - rezistor - katoda - GND | ||
+ | |||
+ | '''SCHÉMA DODÁM''' | ||
+ | |||
+ | == Příklady == | ||
+ | |||
+ | Definuji si 3 výstupy - červený, zelný a modrý | ||
+ | |||
+ | #define red ... | ||
+ | #define gre ... | ||
+ | #fefine blu ... | ||
+ | |||
+ | |||
+ | |||
+ | ;Chceme červenou | ||
+ | #FF0000 - (255, 0, 0) | ||
+ | digitalWrite(red, HIGH); | ||
+ | |||
+ | ;Chceme žlutou | ||
+ | #FFFF00 - (255, 255, 0) | ||
+ | digitalWrite(red, HIGH); | ||
+ | digitalWrite(gre, HIGH); | ||
+ | |||
+ | Ale takto získáme jen omezené množství barev, ale my chceme třeba fialovou, která je | ||
+ | ;fialová #8b00ff - (139; 0; 255) | ||
+ | |||
+ | Takže musíme použít metodu analogWrite() | ||
+ | |||
+ | Víme že: | ||
+ | * RGB v desítkové soustavě je '''od 0 do 255''' | ||
+ | * hodnota do metody analogWrite je v rozsahu '''0 až 1023''' | ||
+ | |||
+ | takže fialové barvy můžeme dosáhnout následujícím způsobem | ||
+ | |||
+ | <div class="Varovani"> Poznámka pro mě - ((255+1)*4)-1 ??? - nejlepší efektivita ale pracné, či dát 255 * 4 a spokojit se s tím, že to nebude moc přesné ... </div> | ||
+ | |||
+ | analogWrite(red,556); | ||
+ | analogWrite(gre, 0); | ||
+ | analogWrite(blu, 1020); | ||
+ | |||
+ | <div class="Poznámka"> | ||
+ | Kompletní kód naleznete na GiTu. (upřesním...) | ||
+ | </div> |
Verze z 18. 11. 2020, 12:20
Obsah |
Co to je?
LED (zkratka z anglického Light-Emitting Diode, česky elektroluminiscenční dioda, též světelná dioda, svítivá dioda, slangově ledka, ojediněle svítivka) je v elektrotechnice označení pro diodu, která emituje světlo, případně infračervené nebo ultrafialové záření, čímž se liší od standardní diody. LED vyzařuje z obnaženého PN přechodu, a vede stejnosměrný proud pouze jedním směrem. Na rozdíl od žárovky dosahuje vysoké účinnosti, je mechanicky odolná, levná na výrobu, a proto je čím dál více využívána (kontrolky, displeje, osvětlení). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2020-08-09]. Dostupné z: https://cs.wikipedia.org/wiki/LED
Popis a zapojení
LEDka má 2 piny - kladný (+) a záporný (-) Obrázek
Menší ploška v diodě a delší nožička je katoda (+)
Větší ploška v diodě a kratší nožička je anoda (-)
Zapojení LEDky je následující (bude schéma)
3V3 / GPIO pin -- katoda LEDky - anoda LEDky - rezistor (odpor) -- GND (zem)
Rezistor můžete umístit před nebo za diodu.
Rožnutí
Stavy máme dva - zapnuto / vypnuto ... svítí / nesvítí ... HIGH / LOW
Příklad
Na pinu D1 / GPIO5 máme zapojenou LEDku a tu chceme rozsvítit a pak zhasnout.
#define cervena 5
Definujeme, že ne GPIO5 je "něco" a to "něco" se jmenuje cervena
void setup() { pinMode(cervena, OUTPUT); }
Řekneme, že cervena je výstupní
void loop() { digitalWrite(cervena, HIGH); delay(); digitalWrite(cervena, LOW); delay(); }
Definovali jsme si, že na GPIO5 je LEDka a že je výstupní.
Potom jsme rožli LEDku, počká se prodleva a pak se LEDka zase zhasne.
Další možnosti definování
#define modra 5 #define modra D1; const char modra = 5; char modra 5; int modra = D1; const char modra = 5;
V návodech se můžete setkat i s některou z těchto možností.
Částečné rozžíhání
Metodu digitalWrite(); jsme si již ukázali. Ta je k rožnutí, či zhasnutí LEDky.
Ale co když chceme LEDku rožnout jen částečně ... třeba na půl jasu?
Či aby se postupně rozžíhala?
nazevLedky - ten název, co jsme dali u #define nazevLedky 15 cislo - jak má svítit - v našem případě je to v rozmezí 0 - 1023 - 1024 možností
takže, chceme rozsvítit LEDku napůl jen - analogWrite(ledka, 512);
Příklad
LEDka se během 5ti sekund rožne.
#define ledka 15 void setup() { pinMode(ledka, OUTPUT); } void loop() { for(int i = 0; i < 1024; i++) { analogWrite(ledka, i); delay(5); } }
Samostatný úkol
- LEDka s postupně rozsvítí a pak postupně zhasne
- Během pěti sekund se LEDka rožne, sekundu zůstane rožnutá na maximum, 5 sekund se bude zhasínat a sekundu zůstane zhasnutá
- LEDka bude sekundu zhaslá, sekundu na poloviční jas a sekundu na maximální jas
RGB LEDka
Popis
RGB LEDka má v sobě jakoby 3 LEDky - Red, Green, Blue Má 3 katody (+) a jednu anodu (-) [schéma]
Abychom ji mohli rozsvítit do námi požadované barvy, musíme něco vědět o [RGB mobelu] Teoreticky je 16milionů 255natřetí možných kombinací, jak může svítit.
Budeme chtít zelenou - tak přivedeme napětí ke katodě která je spojena přechodem pn emitujícím zelené světlo.
Zapojení
GPIO pin - rezistor - katoda - GND
SCHÉMA DODÁM
Příklady
Definuji si 3 výstupy - červený, zelný a modrý
#define red ... #define gre ... #fefine blu ...
- Chceme červenou
- FF0000 - (255, 0, 0)
digitalWrite(red, HIGH);
- Chceme žlutou
- FFFF00 - (255, 255, 0)
digitalWrite(red, HIGH); digitalWrite(gre, HIGH);
Ale takto získáme jen omezené množství barev, ale my chceme třeba fialovou, která je
- fialová #8b00ff - (139; 0; 255)
Takže musíme použít metodu analogWrite()
Víme že:
- RGB v desítkové soustavě je od 0 do 255
- hodnota do metody analogWrite je v rozsahu 0 až 1023
takže fialové barvy můžeme dosáhnout následujícím způsobem
analogWrite(red,556); analogWrite(gre, 0); analogWrite(blu, 1020);
Kompletní kód naleznete na GiTu. (upřesním...)