Montaa¾      Teegid      Ülesanded      
Loendurite loomine Selleks, et teostada tegevuste loendamist on vaja defineerida täisarvuline muutuja int tüübiga ja seejärel saab seda soovitud tingimuste korral suurendada. Samas, teegi tasandil defineeritud funktsioonide eelised on, et Ei loe vaja defineerida ühtegi muutujat Saad kasutada lihtsaid funktsiooninimesid Mitme loenduse korral hästi skaleeruv Funktsioonid on toodud ära juhendis (plaadil) Loendurite loomine

Programmeerimine

C++ keele põhjal, praktiliste harjutustega

Loendurite loomine

Selleks, et teostada tegevuste loendamist on vaja defineerida täisarvuline muutuja int tüübiga ja seejärel saab seda soovitud tingimuste korral suurendada.

Esmalt defineerime muutuja, olgu selle nimeks lühidalt ct (ingl. counter),
tüübiks int (täisarv) ja määrame esmaseks väärtuseks 0

int ct = 0; 

Täisarvulise muutuja suurendamiseks on mitmeid meetodeid, millest peamised on

 

SüntaksKirjeldus
ct = ct + 1;Liitmine ja omistamine: Selgeim, kuid mitte kõige lühem.
ct += 1;Liituv omistamine: Lühivorm.
ct++;Inkremendi operaator (järellaiend): Kõige levinum ja lühim viis loenduri suurendamiseks.
++ct;Inkremendi operaator (eelalaiend): Tulemuse poolest sama, kuid teistsugune prioriteet ja kasutusviis keerulisemates avaldistes. Lihtsa loendamise puhul eelistatakse tihti $ct++$ või $ct += 1$.

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");
}
Loendurite loomine

 

Ü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. 

ÜlesloendusAllaloendus

int ct = 0; // loendur (ingl. counter)
int lSiht = 0; // loenduse Siht, mitmeni

// muutujad void loop(){eelselt

 

if (r1){
  lSiht = 3;
  pr("defineerisin loenduse ", lSiht, " korduseks");
}

if (r2){
  ct++; // suurendab loendurit +1 võrra
  if (ct <= lSiht){
    pr("Loendus kestab");
 }else{
    pr("Siht saavutatud, lõpetus");
 }
}

if (r3){
  ct = 0;
  pr("Nullisin loendurin");
}

int ct = 0; // loendur (ingl. counter)

// muutujad void loop(){eelselt

 

if (r1){
  ct = 3;
  pr("defineerisin loenduse ", ct, " korduseks");
}

if (r2){
  if (ct > 0){
    ct--; // vähendab loendurit -1 võrra
    pr("Loendus kestab");
 }else{
    pr("Siht saavutatud, lõpetus");
 }
}

// vaja on kahte muutujat ja lisaks nullijat// vaja on ühte int muutujat, nullida pole vaja

 

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. 

Allaloenduse puhul piisab ainult loenduse sihi määramisest, mida hakatakse siis igakordselt ct--; meetodil vähendama. Nullini jõudmine on universaalne piir, mille puhul ei ole enam vaja võrdluseks teist muutujat ja võib kasutada olenevalt eelistusest tingimuslauseid - kõik kolm on toimivad variandid

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 

  1. Ei loe vaja defineerida ühtegi muutujat
  2. Saad kasutada lihtsaid funktsiooninimesid
  3. Mitme loenduse korral hästi skaleeruv
  4. Funktsioonid on toodud ära juhendis (plaadil)

 

Loendurite loomine

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. 

Veebilehe disain ja CMS

Loendurite loomine

Esmalt defineerime muutuja, olgu selle nimeks lühidalt ct (ingl counter), tüübiks int (täisarv) ja määrame esmaseks väärtuseks 0 int ct = 0; Täisarvulise muutuja suurendamiseks on mitmeid meetodeid, millest peamised on Süntaks Kirjeldus ct = ct + 1; Liitmine ja omistamine: Selgeim, kuid mitte kõige lühem Selleks, et teostada tegevuste loendamist on vaja defineerida täisarvuline muutuja int tüübiga ja seejärel saab seda soovitud tingimuste korral suurendada.

Loendurite loomine

nanotronic.eu © 2025 nanoTronic » Populaarne standard ja suur jõudlus