14. díl o Arduinu – Knight rider

Po vzoru předchozího dílu, kdy jsme sepínali diody proti sobě na dvou okruzích, se dnes podíváme na to, jak vytvořit světlo, které mělo auto se jménem K.I.T.T. ze seriálu Knight Rider. Způsobů by se jistě našlo více, nicméně ten, který se zde pokusím popsat je podle mě ten nejjednodušší.

V tomto díle budeme potřebovat:

  • Desku Arduino dle výběru, na připojení deseti diod, na kterých budu celý příklad demonstrovat stačí deska UNO, nicméně pokud jich chcete připojit třeba 30, zvolte desku MEGA, já budu volit desku DUE. Celý návod včetně odporů budu popisovat, jakoby šlo o desku s 5V i když to DUE není. To, že používám k těm diodám 47 ohmové odpory, neřešte, protože pro UNO budou potřeba 100 ohmové, aneb pořád jedeme podle vzorečku R=U/I jako v předchozích dílech.
  • 10 LED diod, které jsme používali v předchozích dílech, nicméně pokud jich budete chtít více, je to na vás.
  • 10 odporů (100 ohmů v případě diod co neustále používáme), zde zase platí, kolik LED diod, tolik odporů.
  • Propojovací kabely
  • Bastldesku

V minulém díle jsme zapojili celkem dva obvody. Úplně stejným postupem zapojíme nyní celkem 10 obvodů, nebo 9 popřípadě 15, jak každému bude vyhovovat a jak moc se mu s tímto příkladem chce dělat. Nebudu zde opět psát jak to provést, protože je to pořád jedno a to samé. Můžete se ale podívat na fotografie, jak to mám zapojené já.

Photo 15

Ještě jedna fotka zboku, kde je lépe vidět zapojení odporů, drátku k Arduino a samotných diod.

Photo 18

My se budeme nyní soustředit hlavně na programování Arduina, aby to výsledný efekt udělalo. Funkce setup() nám tedy nabobtná o všechny digitální piny, ke kterým je připojena dioda, vypadat nyní může třeba takto:

void setup(){

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

}

Tímto zaručíme, že všechny digitální piny, ke kterým máme připojené LED diody, budou nastaveny jako výstupy. Také není vůbec špatné pro začátek do funkce setup() nastavit, aby všechny použité piny byly vypnuté. Tedy do funkce přidáme pro každý pin funkci digitalWrite s druhým parametrem LOW. U některých desek se totiž stane, že po nahrání programu či připojení napájení se piny zapnou a tak se může stát, že první část cyklu bude vypadat jinak, než by měla. Nyní ta hlavní část, která zajistí, že světlo půjde z jedné strany na druhou a zase zpět. Musíme počítat s tím, že se jedná o cyklus, který když se dostane ke svému konci, začne zase od začátku a bude tedy potřeba v jednom cyklu naprogramovat postup diod od pinu číslo 2 k pinu číslo 11 a zase zpět. Protože kdybychom vytvořili postup jen na jednu stranu, vždy by se rozsvěcely diody jen třeba zprava doleva, ale už né zpět.

Budeme tedy každou diodu na každém pinu rozsvěcet a tu předchozí v tu samou chvíli zhasínat. Tím se dostaneme k tomuto efektu.

void loop(){

digitalWrite(2,HIGH);

delay(1000);

digitalWrite(3,HIGH);

digitalWrite(2,LOW);

delay(1000);

digitalWrite(4,HIGH);

digitalWrite(3,LOW);

delay(1000);

digitalWrite(5,HIGH);

digitalWrite(4,LOW);

delay(1000);

digitalWrite(6,HIGH);

digitalWrite(5,LOW);

delay(1000);

digitalWrite(7,HIGH);

digitalWrite(6,LOW);

delay(1000);

digitalWrite(8,HIGH);

digitalWrite(7,LOW);

delay(1000);

digitalWrite(9,HIGH);

digitalWrite(8,LOW);

delay(1000);

digitalWrite(10,HIGH);

digitalWrite(9,LOW);

delay(1000);

digitalWrite(11,HIGH);

digitalWrite(10,LOW);

delay(1000);

}

Tímto zápise tedy docílíme, že se každou vteřinu rozsvítí dioda vedle a ta předchozí, co svítila, zhasne, bohužel toto je jen zápis na jednu stranu. Nyní nás to samé bude čekat na stranu druhou. Tuto funkci loop() tedy ještě doplníme o tyto řádky:

digitalWrite(10,HIGH);

digitalWrite(11,LOW);

delay(1000);

digitalWrite(9,HIGH);

digitalWrite(10,LOW);

delay(1000);

digitalWrite(8,HIGH);

digitalWrite(9,LOW);

delay(1000);

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

delay(1000);

digitalWrite(6,HIGH);

digitalWrite(7,LOW);

delay(1000);

digitalWrite(5,HIGH);

digitalWrite(6,LOW);

delay(1000);

digitalWrite(4,HIGH);

digitalWrite(5,LOW);

delay(1000);

digitalWrite(3,HIGH);

digitalWrite(4,LOW);

delay(1000);

digitalWrite(2,HIGH);

digitalWrite(3,LOW);

Konec je jen takto, bez funkce delay, protože hned jak se rozsvítí první dioda a předposlední zhasne, se cyklus opakuje, a na začátku je že dioda na začátku svítí dvě vteřiny před tím, než se vypne. Z tohoto důvodu se již na konci nečeká na nic. Toto přeblikávání má k tomu, co bylo v seriálu ale ještě daleko, protože tam přechod mezi jednotlivými segmenty byl daleko plynulejší a svítilo jich v jednom momentu více, třeba dva. Z tohoto důvodu ještě můžeme dát mezi funkce, která zapíná a na následujícím řádku vypíná předchozí ještě čas, který se má vyčkat, tedy třeba 20ms. Nyní efekt vypadá o dost lépe, nicméně perfektního vzhledu dosáhnou ti, kteří budou připojovat velké množství LED diod a pouštět je rychleji za sebou.

Také hodnota 1000ms je pro tento efekt opravdu hodně pomalá a lepší je, když použijete proměnnou, kterou deklarujete někde na začátku, třeba ve funkci setup() a z funkce delay jen voláte její hodnotu. Je to lepší z toho důvodu, že pokud se rozhodnete přepisovat interval na kratší či delší, nemusíte již přepisovat na tolika místech, stačí pouze a jen na jednom. Mně osobně se nejvíce osvědčil čekací čas 100ms, stejně je to na následujícím videu, které jsem ze své desky natočil pro tento díl.


1. díl o Arduinu - Historie

Arduino je open-source platforma určená pro navrhování hraček a rychlou tvorbu prototypů nejrůznějších součástek. Platforma je založena na mikro-kontrolorech ATMega od firmy Atmel a grafickém vývojovém prostředí, které dá se říci, vychází z prostředí Wiring.

2. díl o Arduinu - typy desek

V současné době je na trhu opravdu velké množství nejrůznějších desek, které lze pro projekty v Arduinu použít. Některé jsou velmi vhodné, jiné vám budou způsobovat vrásky na čele. Jde totiž sehnat desku, pro jejíž programování je zapotřebí externí převodník, protože se sama přímo nedá připojit k PC.

3. díl o Arduinu - speciální typy desek

V minulém díle jsme se zaměřili na základní typy desek, na kterých je možné stavit projekty Arduino. Nyní se však pokusím zaměřit na speciální typy desek, které svůj účel mají, dá se říci svým způsobem předurčen. Jde totiž o desky, které nebudete potřebovat tak často, jako ty předchozí, ale v případě některých je dobré vědět, že existují, protože výsledné prototypování je díky nim o dost jednodušší.

4. díl o Arduinu – Shieldy

Arduino samo o sobě v některých verzích obsahuje různá vylepšení základní verze, viz mutace Arduina Uno na desky Ethernet nebo Bluetooth. Jako příklad si uvedeme připojení k Wi-Fi u stolního počítače.

5. díl o Arduinu – Seznamujeme se s deskou UNO

Než se pustíme do jakéhokoliv programování, popíšeme si trochu jednu z těch desek, kterou budeme ze začátku používat pro projekty. Touto deskou bude Arduino Uno. Arduino Uno je základní deska, která dovede pohánět všechny projekty, na kterých se budeme s Arduinem seznamovat.

6. díl o Arduinu – Připojujeme Arduino k PC a instalujeme IDE

Vývojové prostředí pro Arduino je napsané v jazyce Java. To znamená, že je dostupné pro všechny platformy, na kterých je Java dostupná, z těch hlavních zmíním Windows, Linux a Mac OS X, protože pro ty je již připravená instalace na oficiálních stránkách Arduina.

7. díl o Arduinu – První aplikace

Po minulém díle již máme Arduino plně připojené k PC a je plně funkční. Nyní se tedy podíváme na to, jak vytvořit úplně první program, který na našem Arduinu budeme spouštět.

8. díl o Arduinu - Bastldeska

V minulém díle jsme si představili jednoduchou aplikaci. Byl to, dá se říci počátek všeho, co je zapotřebí pro to, abychom na Arduinu začali cokoliv dělat. A tak po stopách předchozího dílu se nyní podíváme na to, jak k Arduinu připojit skutečnou LED diodu, abychom nebyli omezeni pouze na tu jednu, která je připojena k pinu číslo 13 v případě desky UNO.

9. díl o Arduinu - Připojujeme LED diodu

V předminulém díle jsme si vysvětlili, jak Arduino pracuje a vytvořili jsme jednoduchý program, který nám rozblikal diodu, která byla připojena k pinu číslo 13 přímo na desce Una.

10. díl o Arduinu - Připojujeme LED diody seriově

V minulém díle jsme připojovali jen jednu LED diodu, nyní se ale podíváme na to, jak zapojit více diod tak aby svítily společně a aby jejich zapojení bylo sériové. Sériovým zapojením se rozumí, že diody budou zapojeny za sebou. To znamená, že do této větve dvou diod bude zapotřebí umístit jen jeden jediný odpor.

11. díl o Arduinu - připojujeme LED diody paralelně

Po vzoru předchozího dílu, kdy jsme připojovali dvě diody sériově s odporem na Arduino a jednoho před ním, kdy jsme připojovali pouze jednu LED diodu s odporem, se dnes podíváme na to, jak správně zapojit LED diody paralelně.

12. díl o Arduinu - Připojujeme LED diody sériovoparalelně

V minulých dílech jsme si řekli všechno o tom, jak se připojují LED diody sériově i paralelně. Nyní nastal čas, abychom diody zapojili oběma způsoby najednou. To vše z toho důvodu, že například takto jsou zapojeny diody v LED páscích, proto je možné je stříhat.

13. díl o Arduinu - Blikáme LED diody napřeskáčku

O tom, jak zapojit LED diody víme již snad vše, nepřekvapí nás sériové zapojení, nezapotíme se u paralelního a kombinace obou najednou, je už také za námi. Nyní se ale podíváme na to, jak připojit dvě diody nezávisle na sobě, budeme tedy tvořit dva okruhy, kdy každý bude ovládaný zvlášť.

15. díl o Arduinu - 1. bitový sedmisegmentový displej

O LED diodách a Arduinu již víme vše, nyní tedy trochu postoupíme a pokusíme se zapojit sedmi-segmentový displej a budeme na něm zobrazovat číslo. Tento displej se tedy skládá ze sedmi segmentů, respektive z osmi, pokud počítáme i tečku, které jsou označeny písmeny od A do G.

16. díl o Arduinu - 1. bitový sedmisegmentový displej - loading effect

V minulém díle jsme si připojili jeden sedmisegmentový displej, který dovedl zobrazit pouze jedno jediné číslo. Na tomto displeji jsme pak následně zobrazili číslice od 0-9. Nyní se však podíváme na jednoduchý kód, který by nám měl vytvořit jednoduchý efekt, podobný tomu, který možná často vidíte, když něco načítáte.

17. díl o Arduinu - 2. bitový sedmisegmentový displej

V dílech minulých jsme se zaměřili na sedmisegmentový displej, který dovedl zobrazit pouze jednu číslici, zobrazili jsme na něm čísla od 0 do 9 a pak jsme si vytvořili jednoduchý načítací efekt.

18. díl o Arduinu - maticové zapojení LED diod

V minulých dílech jsme začali displeje, které byly složeny z LED diod. Zobrazovali jsme na nich čísla a v jednom případě jsme i simulovali načítání. A i přes to, že jsem kdysi řekl, že z diod co se zapojení týče, je to snad vše, budeme se v tomto díle k nim vracet, protože existuje ještě jedno zapojení, které jsme si sice představili již dříve, ale tentokrát jej ještě trochu vylepšíme.

19. díl o Arduinu - 4. bitový sedmisegmentový displej

V minulém díle jsme si něco řekli o tom, jak se zapojují LED diody do matice. Vše, co jsme se v minulém díle naučili, se nám nyní bude hodit, protože se dnes pokusíme zapojit 4bitový sedmisegmentový displej, který právě maticového zapojení využívá.

20. díl o Arduinu - Sériový monitor

Dnes si řekneme něco o sériovém monitoru. Arduino když pracuje, tak existuje možnost, díky které Arduino zpět počítači, ke kterému je připojeno po seriové lince posílá nejrůznější informace. Tyto informace mohou být buď hodnoty z nějakého čidla či čidel, informace o tom, jestli je dané relé sepnuté či konkrétní dioda svítí a mnoho dalšího.

21. díl o Arduinu - připojujeme senzor DHT-11

V minulém díle jsme načali sériový monitor a dnes se na něm pokusíme zobrazit první data z čidla. Čidlo, které budeme pro náš pokus používat má označení DHT-11. Tento typ čidla je velmi oblíbený, protože měří teplotu a vlhkost.

22. díl o Arduinu - připojujeme senzor DHT-22

Minule jsme si představili senzor DHT-11, který je sice velmi oblíbený, ale zároveň ne moc přesný, proto se dnes podíváme na jeho vylepšenou verzi, tedy na senzor DHT-22. Senzor DHT-22 má tyto vlastnosti.