Problémamegoldás során, gyakran előfordul,, hogy egy folyamat következő lépése valamely feltétel teljesülésétől függ. Amennyiben a feltétel nem teljesül, úgy a folyamat más eljárást végez el. Nem újdonság ez a jelenség, aki már foglalkozott excellel. Már ott lehetett találkozni ezzel a "ha...akkor...különben...", angolul "if...then...else..." szerkezettel. Ezt az eljárást nevezzük feltételes programelágazásnak. Az oldalsó ábrán látható az utasítás folyamatábrája. A megadott feltétel teljesülése esetén az "akkor", "igen" vagy "then" utasításszó utáni művelet kerül végrehajtásra, nem teljesülés esetén a "különben", "nem" vagy "else" utasításszócska utáni művelet. Az arduino programnyelve két formában is megjeleníti a feltételes elágazást.
if (feltétel) { művelet; }
Feladata: A feltételes elágazás egyszerűsített -nem valódi- megvalósítása, ahol a zárójellek () közötti feltétel teljesülése esetén, a kapcsos zárójelek {} közötti művelet végrehajtódik, majd a folyamat folytatódik a következő utasítással, ahogy nem teljesülés esetén is ezzel folytatódik, csak nem kerül végrehajtásra a feltételes művelet.
Példa:if (x >=0) { x = x - 1 }; //x értéke, ha nagyobb 0-nál, x értékét csökkenti 1-l, majd az if utasítás utáni műveletre lép
//ha nem teljesül a feltétel, az utasítás utáni műveletetre lép, az x értékének csökkentése nélkül
Megjegyzés: a feltétel megadásánál kerüljük az egyenlőségjel (=) használatát, helyette (==) dupla egyenlőségjelet kell használni!
if (feltétel) { művelet1; } else { művelet2; }
Feladata: Valódi feltételes elágazás ahol a zárójellek () közötti feltétel teljesülése esetén, a kapcsos zárójelek {} közötti művelet1 végrehajtódik, nem teljesülés esetén, az "else" utáni kapcsos zárójelben található müvelet2 kerül végrehajtásra.
Példa:if (x >0) { x = x - 1 }; //x értéke, ha nagyobb 0-nál, x értékét csökkenti 1-l, majd az if utasítás utáni műveletre lép
//ha nem teljesül a feltétel, az utasítás utáni műveletetre lép, az x értékének csökkentése nélkül
else {digitalWrite (13, HIGH); } // x=0 értékre bekapcsola a 13-s port LED-je
Példa:
int swichstat = LOW; // kapcsoló állapot, kezdeti érték 0
int lastswichstat = LOW; // utolsó kapcsoló állapot
void setup() {
// put your setup code here, to run once:
pinMode(31, OUTPUT); // 31-s LED beállítása
pinMode(45, INPUT_PULLUP); // 45-s porton lévő kapcsoló olvasásra állítása belső felhúzó ellenállással