Programmeerimine
C++ keele põhjal, praktiliste harjutustegaEsmalt defineerime muutuja, olgu selle nimeks lühidalt ct (ingl. counter), int ct = 0; Täisarvulise muutuja suurendamiseks on mitmeid meetodeid, millest peamised on
tüüpiline näide, kui soovid lugeda näiteks nupuvajutusi, kasutades r1 (ingl. rising edge) väärtust if (r1){ ct++; } Sellks, et oleks paremini aru saada, mitmes nupuvajutus on, lisa ka jadaühenduse tagasiside (ingl. Serial Monitor), kasutades nanoTronic 0.68 versiooni teegis olevaid str() ja print() funktsioone if (r1){ ct++; print("See on " + str(ct) + ". nupuvajutus"); } | ||||||||||
Ülesloendus ja allaloendus Kui loendusele on seatud mingi kindel sihteesmärk, näiteks "Loenda kolmeni", siis selle eesmärgi puhul on tegelikult kaks võimalust, ülesloendus ja allaloendus. Ülesloenduse puhul on vaja defineerida loendurist eraldi sihteesmärgi number ja siis on võimalik loendurit järjest suurendades hetkelist väärtust sihteesmärgiga võrrelda. Teine võimalus on allaloendus, mille korral ülesande alguses seatakse loendur sihteesmärgile ja hakatakse seda järjest vähendama. Loendurit saab nüüd võrrelda nulliga, sihteesmärki ei ole vaja eraldi numbrilise muutujana defineerida.
Nagu näha ülesloenduse koodist, siis selle puhul on vaja võrrelda kahte muutujat, mis peavad olema eelnevalt defineeritud. Kui siht on saavutatud, siis tuleb uue loenduse jaoks määrata nii loenduse siht kui ka nullida loendur, et see hakkaks uuesti otsast peale (nullist) suurenema. if (ct == true){ if (ct > 0){ if (ct){ või alternatiivselt tingimust teistpidi kontrollides if (ct == false){ if (ct == 0){ if (!ct){ mis muudab sellisel moel koodikirjutamise omakorda lihtsamaks
| ||||||
Loendurifunktsioonid teegis nanoTronicu programmi üheks eesmärgiks oli muuta C++ keelega alustamine lihtsamaks ja teha erinevate loogikavõtete kasutamine näitlikumaks, et nende abil oleks võimalik kirjutada põnevalt funktsionaalsete koodilahendusteni õpiprotsessi käigus kiiremini ja ilma tüütutesse tehnilistesse detailidesse liigselt takerdumata.
Eeldefineeritud muutujad Teegi tasandil on defineeritud juba viis int tüüpi muutujat, massiivina. See tähendab, et kui on vaja paralleelselt korraga kasutada kuni viit loendurit, siis ei ole vaja muutujaid juurde defineerida. int c[5] ={0, 0, 0, 0, 0}; Iga üksiku muutuja väärtus on igal ajahetkel alati läbivalt koodis kättesaadav, siis tuleb kasutada vastava muutuja indeksit, mille poole pöördutakse, näiteks loenduri indeksiga 1 poole pöördu c[1] kasutades.
Loenduri sihtväärtuse seadmine Selleks, et konkreetsele loendurile oleks võimalik seada sihtväärtuseks 3 käivita funktsioon startCount(3); Mis muudab funktsiooni siseselt vaikimisi loenduri indeksiga 1 väärtuseks 3, mis on sisuliselt täpselt sama nagu kirjutaksid skriptis c[1] = 3; funktsiooni kasutamise eeliseks on tähenduslik nimi ja eristuvus koodis teistest muutujatest, mis omakorda tõstab arusaadavust ning vähendab dokumenteerimisvajadust, kui kommentaarideta selge.
Loenduse rakendus Koodis saab tingimuslauses kasutada loenduri loendavat osa, mis annab vastava arvu kordi "false" vastuse kui oli defineeritud algselt startCount() kaudu. if (!countEnded()){ pr("Loendus kestab"); }else{ pr("Siht saavutatud, lõpetus"); } Selle näite puhul annab countEnded() kolm korda "false" ja alates neljandast korrast "true". Loendur kasutab allaloenduse suunda (ingl. Count Down), mis tähendab et piiriks on null, millest allapoole enam ei loendata.
Viis loendurit paralleelselt Teegi tasandil int muutujate, nn. "mälupesade" defineerimine ja funktsioonide olemasolu võimaldab lihtsal moel kasutada paralleelselt viit loendurit, üksteisest sõltumatult. Loendurite poole tuleb siis mitme parallelselt kasutamise puhul pöörduda loenduri numbriga, näiteks startCount(3, 1); // esimese loenduri loenduseks 3 korda määäramine startCount(5, 2); // teise loenduri loenduseks 5 korda määramine
Vastavalt saab nende poole pärast loendamise käigus pöörduda if (r1){// loeb 1. nupu vajutusi if (!countEnded(1)){ pr("Loenduri 1 loendus kestab"); }else{ pr("Siht saavutatud, lõpetus"); } } // teine loendur sõltumatult if (r2){// loeb 2. nupu vajutusi if (!countEnded(2)){ pr("Loenduri 2 loendus kestab"); }else{ pr("Siht saavutatud, lõpetus"); } }
Kui kasutad ainult ühte loendurit ja segimineku ohtu ei ole, siis vaikimisi on loenduri number 1, mis tähendab, et ühe loenduri puhul on täpselt sama, kas kasutad järjekorranumbrit või mitte countStart(3, 1); // kasutab loenduri numbrit countEnded(1); // kasutab loenduri numbrit countStart(3); // vaikimis on loendur 1 countEnded(); // vaikimisi on loendur 1 Samas võib kasutada samal loenduril vaheldumisi 3, 5 või 10 loendust, lihtsalt igakordselt loendust alustades tuleb saata countStart(x); sisendina vastav soovitud loenduste number.
Teegifunktsioonide eelised Võimalik on üsna lihtsal moel defineerida ka geneeriliselt muutuja ja seda loendada ning nullida. Samas, teegi tasandil defineeritud funktsioonide eelised on, et
|
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
C++ on masinate keel
Maailmas kõige enam kasutusel olev seadmete programmeerimiseks kasutatav keel on C++ mis võimaldab väikestel kiipidel ökonoomselt programmiloogikat lahendada ja teha ka suuri kõrgkeelele omaseid andmetöötlusi.
Populaarne Nano standard
Laiendusplaadi nanoTronic disainimisel on aluseks võetud Arduino Nano standard, mis võimaldab teha nii automatiseerimist, vanade asjade digitaliseerimist kui ka luua akutoitel töötavaid ökonoomseid mobiilsid seadmeid.
Ülesanded samm-sammult
Selleks, et C++ paremini tundma õppida on loodud ülesannetekogu, milles saab alguses teha lihtsamaid, samm-sammult keele võimalusi tutvustavaid harjutusi ja siirduda siis järjest edasi jõukohaste väljakutsetega.
Projekti fookusest
Projekt nanoTronic on loodud eelkõige hariduslikel eesmärkidel, et edendada mehhatroonika erialal programmeerimise süvendatud õpet, parema struktuuri ja loogikakasutusega skriptide kirjutamist.