Ú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 hodnotu255na pin 9.255značí maximální napětí.analogWrite(9, 127)pošle hodnotu127na pin 9, což znamená 50 % maximálního napětí.analogWrite(9, 0)pošle hodnotu0na pin 9.0značí 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.

