První program je pro začínajícího programátora hromada textu, které nerozumí. Proto si pomaloučku, polehoučku vysvětlíme jak to vlastně funguje.
V programu blink, který nám na desce umí pouze blikat diodou (a je tedy hrozně jednoduchý) jsem vám označil oblasti kódu, které si postupně popíšeme.
Komentář
Komentování programu je velmi užitečná věc a proto se jí budu snažit používat u všech programů, které vám zde budu dávat ke stažení. Správní programátoři používají komentáře kódu jako poznámky, kdyby zapomněli co vlastně naprogramovali (a věřte že po letech se to velmi hodí). Také se komentáře používají pro úvodní popis programu – to je zrovna i příklad kódu na obrázku. Zpravidla se do těchto komentářů píše kdo program vytvořil, kdy, k čemu ten program slouží a někdy dokonce i popis toho, jak arduino zapojit, aby náš program fungoval.
Komentář můžete psát dvěma způsoby. Buď jako blok – to když chcete napsat delší souvislý text (stejně jako je to v úvodu programu), nebo jako řádkový komentář. To pak komentář napíšete vedle řádku s kódem a až bude program arduino posílat desce arduina váš kód, tak samozřejmě vaše komentáře vynechá, deska je totiž nepotřebuje a kód se tím zmenší a tím pádem nemá takové nároky na paměť desky.
Blokový komentář
Aby program poznal, kde končí a kde začíná váš blokový komentář, je třeba označit začátek a konec blokového komentáře.
Začátek se značí kombinací hvězdičky a lomítka – /* . Konec také, ale opačně */. Hvězdička nám zkrátka označuje vnitřek komentáře a my si nemůžeme splést začátek a konec blokového komentáře. Jakýkoliv kód programu, který uvedeme dovnitř komentářového bloku se neprovede, protože si arduino při odesílání programu do desky bude myslet, že to není program, ale komentář a vypustí ho z odeslaného programu.
Řádkový komentář
Řádkový komentář se používá, když chceme okomentovat právě ten jediný řádek kódu u kterého komentář napíšeme. Pokud se koukneme na obrázek s kódem, nalezneme příklady jednořádkových komentářů vždy na koncích řádku. U řádkového komentáře to funguje stejně, jako u blokového – program ho na desku neodesílá. Proto potřebuje vědět, kde přesně řádkový komentář začíná. V kódu je začátek komentáře značen dvěma lomítky za sebou – //. Vše co je za dvěma lomítky je pouze komentář určený pro oko programátora a arduino ho nebere na vědomí. Příkaz se dvěma lomítky platí jen pro jeden řádek, pokud ho odentrujete a roztáhnete přes dva řádky arduino IDE začne křičet, že jste udělali chybu. Pokud chcete komentář přes více řádků použijte blokový komentář.
Ukol: Přepište v programu blink blokový i řádkový komentář (program neukládejte).
Setup
Již jsme si říkali, že deska arduina je skvělá v tom, že je to jakýsi polotovar, který si můžeme dotvořit ke konkrétní podobě elektronické konstrukce, kterou zamýšlíme vytvořit. To „dotvoření“ probíhá nejen v tom, jaké součástky k desce připojíme, ale především v tom, jak desku naprogramujeme.
Program je je rozdělen na jednotlivé sekce/kapitoly/oblasti, které jsou definovány klíčovým slovem void (mrkněte do kódu, kde všude ty voidy najdete). Za slovem void najdete název daného bloku. Samozřejmě si později můžete vytvořit svůj, ale v začátku jsou takové ty povinné voidy setup a loop. V hlavičce kódu najdete i dvě závorky (později si řekneme k čemu slouží) a složené závorky, které nám označují začátek a konec voidu. Všimněte si, že složené závorky nejsou stejné, jsou zrcadlově natočené tak, aby bylo jasné kde je začátek a kde konec voidu.
Void setup tedy říká, jak programátor požaduje, aby deska arduina fungovala. Jaké budeme používat výstupy/piny a jestli budou nastaveny jako vstup, nebo výstup, popřípadě jaké další vlastnosti by mohly piny na desce mít. V příkladu na grafice jste si jistě všimli, že jsou do těla voidu vloženy tři příkazy začínající klíčovým příkazem pinMode (nastavení pinu), který dál pokračuje závorkou ve které jsou přesně definovány dvě vlastnosti pro toto nastavení. Prvou vlastností je číslo pinu, kterého se toto nastavení týká (honem, kolik pinů má vlastně arduino? :-)). Za čárkou je pak nastavena další vlastnost a to o jaký typ pinu se bude jednat INPUT je vstup a OUTPUT je výstup. Zatím budeme používat pouze výstupy.
Void setup se spouští pouze jednou – při startu programu (nebo třeba při stisku resetovacího tlačítka na desce).
Loop
Dalším voidem, který naleznete prakticky ve všech programech pro arduino je void loop. Výraz loop znamená česky slovo smyčka a přesně to tato část programu dělá. Po spuštění programu se jednou provede void setup a pak se neustále dokola provádí void loop. Jakmile program v bloku loop dojde na konec, přeskočí zpátky na začátek a tak pořád dokola.
V loopu tedy najdete to co vlastně deska arduina provádí. Je třeba také říci, že oba tyto voidy mohou být v programu pouze jednou. Častou chybou při kopírování kódu je několik loopů, nebo setupů zkopírovaných za sebou. Program pak hlásí chybu. Pokud tedy kopírujete z programu do programu, kopírujte vnitřek těla těchto bloků, ale bez hlavičky (kopírujte pouze tu část kódu, která je mezi složenými závorkami).
Příkaz digitalWrite() a delay()
Prohlédnete-li si tělo loopu v příkladu na obrázku naleznete v něm dva příkazy.
příklad: příkaz digitalWrite(LED_BUILTIN, HIGH), popřípadě další verzi digitalWrite(LED_BUILTIN, LOW)
Příkaz digitalWrite() posílá, nebo neposílá napětí na určitý pin. V praxi se to dá použít na spoustu věcí od startování motůrků, rozsvěcení světla až po spoušrění zvuků. Jako všechny funkce (i void) tato část kódu funguje tak, že první je jméno funkce „digitalWrite“ – (napiš/pošli na digitální pin), načež následují závorky ve kterých jsou uvedeny vlastnosti této funkce. První vlastností je číslo pinu na kterém se bude výstup realizovat (už víte kolik má arduino digitálních pinů?) – parametr LED_BUILTIN v tomto případě znamená LED vestavěná na desce arduina. Dalším parametrem je příkaz HIGH, nebo LOW. HIGH znamená, že na pin posíláte napětí, LOW zase, že neposíláte.
Otázka: Na jaký pin pouští příkaz digitalWrite(3,LOW) napětí?
příklad: příkaz delay() určuje časový interval po který se má plnit předchozí příkaz
Příkaz delay() určuje časový interval po který se plní příkaz napsaný před ním. Požadovaný čas se píše formou číslice mezi obě závorky. Hodnota je braná v milisekundách, tudíž jedna sekunda = 1000 milisekund. Abychom to lépe pochopili, raději si vše vyzkoušíme v praxi.
Úkol: V programu blink změňte hodnoty ve funkcích delay z 1000 na 50, program pošlete do desky a sledujte co se stane. Zkuste zadat i jiné hodnoty.
Tip na závěr: Mrkněte v programu vždy na konec řádku, najdete tam středník (vypadá takto: ;). Tento znak zakončuje řádek a je vždy povinný, často se zapomíná a program pak hlásí chybu, nebo funguje špatně.