Díl 2 - Pitva prvního programu (blikání diody)

21.09.2013 13:08

Pitva prvního programu - blikání LED diody

V minulém díle jsem Vám ukázal, jak jednoduše připojit desku Arduina k PC a nahrát do ní první program. Tento program jsme si půjčili z příkladů, které jsou přímo v programovacím prostředí.

Abychom ale dokonale pochopili jak takový program funguje, rozebereme si jej popořadě celý, tedy jinak řečeno napíšeme si celý program znova, pěkně postupně a ukážeme si, co která část dělá a jak se vlastně zpracovávají jednotlivé příkazy.

Na každé desce je na digitálním pinu č.13 integrována LED dioda, takže pro svůj první program dokonce nepotřebujeme ani jeden drát či součástku, stačí nám jen samotná deska Arduino UNO (Mega nebo Nano).

Napíšeme si jednoduchý program, kdy nám dioda na desce bude blikat v pravidelném intervalu 1 sekundy.

Psaní programu se řídí syntaxí jazyka Wiring (velmi podobný jazyku C).
Úplné podrobnosti si povídat nebudeme, prostě pište co vidíte a tak jak to vidíte, včetně středníků a dalších značek.

Nejprve si pečlivě rozebereme jednotlivé části programu.

Existuje jakási základní minimální "kostra" programu, kterou musíme dodržet.Vypadá přesně takto:

Pokud uploadujete (nahrajete) tento program do Arduina, bude prováděn, ale nebude dělat zhola nic. Je to jen základní "kostra" programu, kterou musíme dodržet, ale můžeme ji také patřičně rozšířit. O tom ale později, v dalších dílech seriálu.

První část "kostry":

void setup() {
}
je podprogram (část programu vymezená svým jedinečným jménem "setup"), která se vykoná ihned po resetu zařízení.
Vykoná se pouze jednou na začátku a potom už ji program ignoruje.
Do této části se pak logicky vkládají příkazy, které potřebujeme pro prvotní nastavení zařízení, případně načtení nějakých základních (defaultních) hodnot při startu zařízení.
 

Druhá část "kostry":

void loop() {
}
je podprogram, který se vykonává neustále dokola, jako nekonečná smyčka. Je pochopitelně možno do něj vkládat další příkazy
či "odskoky" do jiných podprogramů, které si sami definujete.
 
A teď již k programu - je dobrým zvykem dát na začátek programu drobný komentář, který sděluje, k čemu daný program slouží.
Pro zápis komentářů se používá značka "/*" pro začátek a "*/" pro konec.
Také existuje jednořádková varianta komentáře, tam se používá značka "//"".
 
/*
Program - Blikani
Zapne LED diodu na 1 sekundu, vypne LED na 1 sekundu, a opakuje.
*/
 
Dále - jak jsme si již řekli - musíme začít prvotním nastavením:
 
void setup() { //toto je nastavovaci cast, ta se vykona pouze jednou, po resetu zarizeni
  // inicializujeme si pin 13 jako vystupni
  // na vetsine desek Arduino je na pinu 13 LED dioda.
  pinMode(13, OUTPUT);
}
 
Zde jasně vidíte použití komentářů přímo v kódu, krásně nám vysvětlují, co příkaz pinMode() dělá.
Nastavuje jednotlivé piny na desce buďto jako vstupní (INPUT) anebo jako výstupní (OUTPUT).
A protože potřebujeme diodu rozsvítit (tedy pustit do ní proud), nastavíme pin 13 jako výstupní.
Tím ale diodu nerozsvítíme, pouze jsme "řekli" procesoru (dobrá - microprocesoru), že pin 13 budeme používat jako výstupní.
 
void loop() { //toto je cast, ktera bezi neustale dokola, dokud nedojde k resetu zarizeni
  digitalWrite(13, HIGH);   // rozsvitime LED
  delay(1000);              // pockame 1000 milisekund(=1 sekundu)
  digitalWrite(13, LOW);    // zhasneme LED
  delay(1000);              // pockame 1000 milisekund(=1 sekundu)
}
 
Zde již vidíme vlastní "rozsvícení" LED diody, použili jsme příkaz digitalWrite(), protože pin č.13 je digitální.
Jak můžete vidět, příkaz "digitalWrite()" má dva parametry, první je číslo pinu se kterým má pracovat a druhým parametrem je mód, do kterého má pin přepnout. HIGH znamená zapnout (5V), LOW znamená vypnout (0V). 
Volty jsem uvedl jen pro zjednodušení, není to úplně přeně tak, znalci mne snad neukamenují, jde o vysvětlení pro úplné začátečníky.
 
Příkazem "digitalWrite(13, HIGH)" jsme tedy pustili proud přes pin 13 a protože je na desce integrována dioda, rozsvítí se.
Pokud bychom chtěli použít svoji LED diodu, není nic jednoduššího, než ji s pomocí odporu (cca 100kOhm) připojit katodou (tedy plus) na pin 13 a anodou (spolu s rezistorem) na zem(tedy mínus).
 
OK, dioda svítí, potřebujeme počkat 1 sekundu.
K tomu slouží příkaz "delay()", který má jako parametr počet milisekund (1sec = 1000 milisec).
A dle parametru potom přeruší provádění kódu na daný počet milisekund.
Potom diodu vypneme a opět počkáme 1 sekundu, aby byl cyklus kompletní.
 
HOTOVO!
Když tento program nahrajeme do Arduina a stiskneme tlačítko RESET na desce,
bude nám dioda integrovaná na pinu 13 blikat v intervalu jedné sekundy.

 

 

Zpět

Kontakt

Arduino-Home

© 2014 Všechna práva vyhrazena.

Tvorba webových stránek zdarmaWebnode