5. Sõrmede liigutamine

Programmi arendamine

Tinker CAD graafiline programmeerimiskeskkond (GPE) on piiratud ainult loop() funktsiooni arendamisega, setup() käivitatakse vaikimisi. Seda väikest piirangut saab ületada, jätkates arendust ainult C keeles (ilma CodeBlocksita), mis võib olla suuremate praktiliste rakenduste puhul aktsepteeritav. GPE sisaldab 6 tüüpi “CodeBlocks” operatsioone, mis on kodeeritud erinevate värvidega (Joonis 41a): muutujad, juhtimine, väljund, sisend, matemaatika (sisaldab tingimuse täitmise arvutamist, nn Boole'i tehteid, mida kasutatakse juhtlausetes), märgendid (kommentaarid). Erinevat tüüpi lauseid kombineeritakse omavahel vastavalt nende kujule.

Servo-mootorite (“sõrmede”) liigutamise programm koosneb ühest väiksemast ja kahest suuremast osast (Joonis 41b), mis on eraldatud hallide kommentaaridega: 

  • Pöörlemiskiiruse seadistamine (rotationStep muutuja, roosa) – kui programm viiakse üle reaalsele UNO-le, võib selle lause paigutada setup() protseduuri. 

  • Iga servo-mootori pööramiseks kindlasse asendisse antakse juhised – 5 väljundit (sinine), kus tuleb hoolikalt määrata õige väljundnõel (UNO plaadil) ja asend (erinevad muutujad, roosa). Kuna need muutujad on vaikimisi seatud väärtusele 0 setup() käigus, ei juhtu pärast sisselülitamist midagi enne, kui mõni nupp on vajutatud. 

  • Nupupaaride kontrollimine ja servo-mootorite asendi ümberarvutamine. Seda osa korratakse (joonisel 41b on nähtav ainult üks) 5 korda iga kahe nupu ja ühe servo-mootori komplekti kohta. 

    • Nupu “Up” seisund (pinge) loetakse analoogsisendist. Võimalik lugemisvahemik on 0 kuni 1023 ühikut, mis vastab vastavalt 0 ja 5 voldile. Tuleb hoolikalt määrata õige sisendnõel UNO plaadil. 

    • Kui loetud väärtus on suurem kui 256 (1,25V), siis arvutatakse konkreetse servo-mootori asend ümber, suurendades seda rotationStep võrra; 

    • Arvutatud asend ei tohi ületada 180°. Kui see juhtub, seatakse see piirväärtusele. 

    • Kui nuppu “Up” ei vajutatud, täidetakse else haru. 

    • Nupu “Down” seisund loetakse digitaalsisendist (0 = Ei, 1 = Jah). Tuleb hoolikalt määrata õige sisendnõel UNO plaadil. 

    • Kui loetud väärtus on suurem või võrdne 1-ga, siis arvutatakse konkreetse servo-mootori asend ümber, vähendades seda rotationStep võrra. Negatiivse rotationStep väärtuse saamiseks oli vajalik täiendav aritmeetiline (matemaatika, roheline kategooria) tehe. 

    • Arvutatud asend ei tohi langeda alla 0°. Kui see juhtub, seatakse see piirväärtusele. 

Joonis 41. Osa servo-mootorite käivitamise graafilisest programmist