Muutre¾iim (ingl. Toggle)

Vaatame lähemalt, milliste meetoditega on võimalik pöörata muutujaid teistpidiseks 0 ja 1 vahel. Tüüpiliselt on C++ mitmeid erinevaid võimalusi teha sama asja, pisut teises stiilis ja siin tuleb mängu üldine lähenemine koodikirjutamisse ja skripti autori isiklikud, loomingulised eelistused.

Muutre¾iim (ingl. Toggle)

Muutre¾iim või lülitusloogika tähendab olukorda, kus mingi väärtus vahetub kordamööda kahe oleku vahel iga kord, kui tingimus täidetakse või sündmus aset leiab. Arduino koodis kasutatakse seda sageli millegi sisse- ja väljalülitamiseks (nt LED-i oleku muutmine, ühe nupuvajutusega).

 

Põhimõtteliselt on see loogika järgmine:

  • Kui praegune väärtus on A, siis muuda see B-ks.

  • Kui praegune väärtus on B, siis muuda see A-ks.

Kõige levinumad väärtused Arduino kontekstis on:

  • HIGH ja LOW (vastavalt 1 ja 0)

  • true ja false (kuigi int tüüpi muutujatega kasutatakse tavaliselt 1 ja 0).

Toome siinkohal välja neli peamist muutre¾iimi võtet. Võtame näidisprogrammide tegemisel aluseks ühe led tule diskreetse oleku, kui väljund o1 väärtus on 0 (ka false), siis tuli ei põle. Teisalt kui o1 on 1 (ka true) siis on väljundpordis signaal ja led tuli põleb. 

 

if .. else if

See on selge struktuuriga, näitab detailselt ära, mis on tingimus ja mida selle peale peab muutujale o1 omistama. Näiteks

if (o1 == 0){           // kui o1 on väljas, siis
  o1 = 1;               // lülita tuli sisse
}else if (o1 == 1){    // kui o1 on sees, siis
  o1 = 0;               // lülita tuli välja
}

 

o1 = 1 - o1;

See on aritmeetiline muutmine, mis töötab hästi binaarsete väärtuste 1 ja 0 vahel. Kui väärtus oli enne 1, siis on tehte 1 - 1 tulemuseks 0, kui enne oli väärtus 0, siis on tehte 1 - 0 tulemuseks 1. 

o1 = 1 - o1;

 

o1 ^= 1;

Bitinihe Eksklusiivne VÕI (Bitwise XOR) on C/C++ (ja Arduino) kontekstis kõige elegantsem ja tõhusam viis ühe biti (või 1 ja 0) muutre¾iimi teostamiseks, kus kasutatakse operaatorit (eksklusiivne VÕI).

o1 ^= 1; 

Selles väljendis kasutatud ^ märki nimetatakse eesti keeles katusmärgiks või karetiks (inglise keeles caret). Pisut problemaatiline võib olla Eesti või Skandinaavia ISO paigutusega klaviatuuridel selle sisestamine, sest seda ei ole sümbolina, vaid tuleb kasutada kahvikombinatsiooni, näiteks

 

Monteeri lihtsalt ja kiiresti

Riistvara montaa¾ on jaotatud etappideks ja toetatud õppevideodega. Vaata lähemalt.

 

Tarkvaratugi

Loe riistvaralist portide lugemist ja muutujate defineerimist toetava tarkvarateegi kohta