V tomto týdnu jsme se začali věnovat základním řídícím programovým konstrukcím sloužícím k větvení programu. Arduino sice vykonává všechny příkazy sekvenčně za sebou, avšak ne ve všech případech je toto žádoucí. V určitých případech naopak požadujeme, aby se určité příkazy vykonaly pouze za splnění určité podmínky. A k tomu jsme použili příkaz if.
if (podmínka) { // podmíněná část programu }
Podmínka je logický výraz, který je buď pravdivý nebo nepravdivý. Chceme-li prostřednictvím příkazu if zajistit, aby se podmíněná část programu provedla, musí být podmínka splněná, tj. logický výraz musí být pravdivý.
Využití podmínek jsme si demonstrovali na blikači, kde vykonání podmíněné části programu způsobilo, že jedna z diod začala blikat. Podmínka pak byla sestavena tak, že hodnota napětí na analogovém vstupu nastavená prostřednictvím připojeného potenciometru musela být vyšší než určitá hodnota.
Výše uvedenou programovou konstrukci je možné ještě rozšířit o další část programu, která se vykoná tehdy, pokud daná podmínka splěna nebude.
if (podmínka) { // podmíněná část programu 1 - podmínka platí } else // podmíněná část programu 2 - podmínka neplatí }
Tato konstrukce zabezpečí to, že se vykoná buď podmíněná část programu 1, nebo podmíněná část programu 2, v závislosti na tom, zda podmínka platí či neplatí. Podobně jako v předchozím případě jsme si tuto konstrukci ověřili rozblikáním jiné diody v sekci else.
Podmínka může obsahovat buď jednochý logický výraz (např. c > 300), nebo může být sestavena zřetězením více logických výrazů za využití logických operátorů - OR nebo AND (tzv. složený logických výraz).
logický_výraz_1 AND logický výraz_2.
Použijeme-li logický operátor AND, je celkový logický výraz platný právě tehdy, jsou-li platné oba dva logické výrazy, tj. logický_výraz_1 a zároveň logický_výraz_2.
logický_výraz_1 OR logický_výraz_2
U logického operátoru OR je logický výraz platný tehdy, pokud je platný alespoň jeden z logických výrazů, tj. logický_výraz_1 nebo logický_výraz_2.
Pro ověření složeného logického výrazu jsme připojili k Arduinu dva potenciometry a sestavili jsme podmínku příkazu if tak, že napětí na prvním analogovém vstupu muselo být větší než hodnota 300 a zároveň napětí na druhém analogovém vstupu muselo být větší než hodnota 800.
if (c > 300 AND z > 800) {
...
}
Podmínky a příkaz if nejsou nic složitého. Příště se podíváme na cykly.