Úvod do programování mikrokontroléru
V tomto článku si ukážeme, jak začít s programováním mikrokontroléru Maker UNO.
Analogový vs digitální signál
Předtím než se pustíte do programování mikrokontroléru a řízení připojených obvodů, musíte napřed chápat rozdíl mezi analogovým a digitálním signálem.
Digitální signál nabývá dvou stavů ‒ zapnutý/ON (proud prochází obvodem) a vypnutý/OFF (proud neprochází obvodem). Posláním signálu ON na pin 5 můžeme připojené elektronické zařízení aktivovat. Posláním signálu OFF můžeme připojené elektronické zařízení naopak deaktivovat.

Analogový signál nabývá více než dvou stavů. Pro Arduino jsou to hodnoty od 0-255. 0 znamená že do obvodu neproudí žádný proud (napětí je 0 V) a 255 je maximální napětí v obvodu. Analogové hodnoty (0-255) jsou přímo úměrné napětí, které se pošle na výstupní pin (např. 127 pošle na výstupní pin 50 % maximálního možného napětí). Jinými slovy, když připojíme nějakou LED na analogový pin tak hodnota 0 ledku vypne, 127 jí rozsvítí na polovinu jasu a 255 jí rozsvítí na plný jas.
Kostra programu
Mikrokontrolér spouští dvě hlavní funkce ‒ setup()
a loop()
. Jak ukazuje následující diagram, funkce setup()
se provádí pouze jednou, na začátku, zatímco funkce loop()
běží pořád dokola, dokud se Arduino nevypne.

Vývojové prostředí
K programování použijeme speciální integrované vývojové prostředí Arduino IDE, které je volně ke stažení na oficiálních stránkách Arduina, www.arduino.cc.
Tip: Po prvním spuštění Arduino IDE doporučujeme zapnout funkci zobrazení čísel jednotlivých řádků: Soubor → Vlastnosti → Zobrazit čísla řádků.
V Arduino IDE se hlavičky základních funkcí setup()
a loop()
vytvoří automaticky.
void setup() {
// sem vložte svůj zaváděcí kód, který se spustí na začátku
}
void loop() {
// sem vložte svůj hlavní kód, který poběží ve smyčce
}
Tvorba programu
Základní pravidla
- Arduino rozlišuje velká a malá písmena.
- Každý řádek musí končit středníkem
;
. - Každá závorka
(
a{
musí být uzavřena odpovídající závorkou)
, respektive}
. - Pozor na překlepy!
Obecný postup
Krok č. 1
Pomocí pinMode
ve funkci setup()
identifikujte použité piny a specifikujte způsob, jak budou použity – jako vstup nebo jako výstup.
Krok č. 2
Naplánujte si, co a jak budete programovat. U složitějších programů začněte diagramem.
Krok č. 3
Do funkce loop()
vložte svůj kód, který bude řídit výstupy a reagovat na vstupy.
Krok č. 4
Pomocí USB kabelu připojte své Maker UNO k počítači a v nastavení Arduino IDE vyberte příslušný port.
Krok č. 5
Nahrajte program do Maker UNO, klikněte v Arduino IDE na tlačítko Upload.
Poznámka: Váš kód zůstane v paměti mikrokontroléru tak dlouho, dokud ho nepřepíšete jiným kódem.
Diagram
Než napíšeme program, měli bychom naplánovat postupy v programu pomocí diagramu. Vysvětlení použitých symbolů je na obrázku níže.

Příklad č. 1: funkce digitalWrite()
Maker UNO má u každého pinu jednu integrovanou LED. To se skvěle hodí se k našemu úvodu do programování a později k diagnostice obvodů.
Poznámka: Integrované LED má pouze Maker UNO. Pro použití s Arduino UNO musíte připojit externí LED.
Vytváříme jednoduchý sekvenční program bez podmínek. Ovládá pin 13, který každou vteřinu střídavě zapíná a vypíná.

Následující kód reprezentuje program z předchozího diagramu:
1 void setup() {
2 pinMode(13, OUTPUT);
3 }
4
5 void loop() {
6 digitalWrite(13,HIGH);
7 delay(1000);
8 digitalWrite(13,LOW);
9 delay(1000);
10 }
Řádek | Kód / symbol | Funkce |
1 | void setup() { | Tímto začíná funkce setup() , která se používá k definování pinů.Všimněte si, že void a setup mají v Arduino IDE rozdílné barvy. Barva indikuje, že jsou to speciální, tzv. klíčová slova. Symbol { označuje začátek kódu funkce setup() . |
2 | pinMode | Nastavuje pin na vstup (input) nebo výstup (output). V tomto případě je pin 13 nastaven na výstup. |
3 | } | Symbol } označuje konec funkce setup() . Počínaje symbolem { na řádku 1, funkce setup() obsahuje pouze kód mezi { a } , což jsou řádky 1-3. |
4 | ||
5 | void loop() { | Tento řádek označuje začátek funkce loop() , která poběží pořád dokola, dokud Arduino nevypneme. Slova void a loop jsou znovu slova klíčová, takže mají rozdílnou barvu.Symbol { označuje začátek funkce loop() . |
6 | digitalWrite | Příkaz digitalWrite() posílá digitální signál na definovaný pin. Tento řádek pošle signál HIGH na pin 13, čímž aktivuje připojený obvod. |
7 | delay(1000) | Příkaz delay() pozastavý průběh programu na definovaný počet milisekund. 1000 milisekund je 1 vteřina. |
8 | digitalWrite | Tento řádek pošle signál LOW na pin 13, čímž tím ho vypne a deaktivuje připojený obvod. |
9 | delay(1000) | Potřebujeme přidat další zpoždění, kdybychom ho nepřidali, přeskočí program zpět na řádek 6 a spustí LED dříve než postřehneme její vypnutí. |
10 | } | Symbol } označuje konec funkce loop() .Funkce loop() obsahuje jen řádky mezi 5. a 10. řádkem. |
Následující program pak rozbliká střídavě LED u pinů 9 a 8.
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(1000);
Příklad č. 2: funkce analogWrite()
Poznámka: Ne každý pin dokáže vysílat analogový signál, to mohou pouze piny označené na desce znakem
~
(vlnovka). Jsou to piny 3, 5, 6, 7, 9, 10 a 11.

K posílání analogových signálu slouží funkce analogWrite(pin, hodnota)
, kde hodnota
je číslo v rozmezí od 0 - 255
a pin
je číslo pinu.
analogWrite(9, 255)
pošle hodnotu255
na pin 9.255
značí maximální napětí.analogWrite(9, 127)
pošle hodnotu127
na pin 9, což znamená 50 % maximálního napětí.analogWrite(9, 0)
pošle hodnotu0
na pin 9.0
značí nulové napětí.
Shrnutí
Mikrokontrolér může na své výstupy vyslat jeden ze dvou základních signálů – analogový nebo digitální. Vysílání řídí náš program uložený v paměti mikrokontroléru. Program má dvě části, funkci setup()
, která vše připraví a funkci loop()
, která se opakuje. Program vytváříme a do paměti mikrokontroléru nahráváme z integrovaného vývojového prostředí Arduino IDE.
V příštím díle si popíšeme základní součástky, které můžeme na výstup mikrokontroléru připojit a ukážeme si jak je ovládat.