Programos kūrimas

Tinker CAD grafinė programavimo aplinka (GPE) yra ribota tik loop() funkcijos kūrimui, o setup() yra vykdoma numatytai. Šį nedidelį apribojimą galima įveikti tęsiant tolesnį programos kūrimą tik C kalba (be CodeBlocks), kas gali būti priimtina didesnėms praktinėms užduotims. GPE aplinkoje yra 6 rūšių „CodeBlocks“ operacijos, pažymėtos skirtingomis spalvomis (41a pav.): kintamieji, valdymas, išvestis, įvestis, matematika (apima sąlygos patikrinimą, vadinamąsias Būlio operacijas, naudojamas valdymo sakiniuose), žymėjimas (komentarai). Skirtingų rūšių sakiniai yra jungiami tarpusavyje pagal jų formas.

Programa, valdanti servo variklius („pirštus“), susideda iš vienos mažos ir dviejų pagrindinių dalių (41b pav.), atskirtų pilkais komentarais:

  • Sukimosi greičio nustatymas (rotationStep kintamasis, rožinis) – perkeliant programą į tikrą UNO plokštę, šį sakinį galima perkelti į setup() procedūrą.

  • Komandų suteikimas kiekvienam servo varikliui pasisukti į tam tikrą padėtį – 5 išvestys (mėlynos), kur būtina atidžiai nurodyti teisingą išvesties kontaktą (UNO plokštėje) ir padėtį (skirtingi kintamieji, rožiniai). Kadangi šie kintamieji numatytai nustatomi į 0 setup() metu, po įjungimo niekas nevyksta, kol nepaspaudžiamas koks nors mygtukas.

  • Mygtukų porų tikrinimas ir servo variklių padėties perskaičiavimas. Ši dalis kartojama (41b pav. matoma tik viena) 5 kartus kiekvienai 2 mygtukų ir servo variklio grupei.

    • Mygtuko „Up“ būsena (įtampa) nuskaitoma iš analoginės įvesties. Galima nuskaitymo reikšmė yra nuo 0 iki 1023 vienetų, atitinkamai 0 ir 5 voltai. Būtina atidžiai nurodyti teisingą įvesties kontaktą UNO plokštėje.

    • Jei nuskaityta reikšmė didesnė nei 256 (1,25 V), tuomet konkretaus servo variklio padėtis turi būti perskaičiuojama, padidinant ją rotationStep verte;

    • Apskaičiuota padėtis neturi viršyti 180°. Jei taip nutinka, ji nustatoma į šią ribinę reikšmę.

    • Jei mygtukas „Up“ nebuvo paspaustas, vykdoma else šaka.

    • Mygtuko „Down“ būsena nuskaitoma iš skaitmeninės įvesties (0 = Ne, arba 1 = Taip). Būtina atidžiai nurodyti teisingą įvesties kontaktą UNO plokštėje.

    • Jei nuskaityta reikšmė yra didesnė arba lygi 1, tuomet konkretaus servo variklio padėtis turi būti perskaičiuojama, sumažinant ją rotationStep verte. Papildoma aritmetinė (matematinė, žalia kategorija) operacija buvo reikalinga, kad rotationStep reikšmė būtų neigiama.

    • Apskaičiuota padėtis neturi nukristi žemiau 0°. Jei taip nutinka, ji nustatoma į šią ribinę reikšmę.

41 pav. Grafinės programos dalis servo variklių valdymui