Turinys:
- Prekės
- 1 žingsnis: viską nustatykite
- 2 žingsnis: supraskite, kaip sujungti Otto
- 3 žingsnis: užpildykite spragas
- 4 žingsnis: priverskite Oto šokį
Video: „Arduino Otto“robotas su valstybine mašina: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
projekto apžvalga
Šiame projekte noriu parodyti jums Otto roboto, kuris yra „Arduino“pagrindu sukurtas „pasidaryk pats“, programavimo būdą. Naudodami „YAKINDU Statechart Tools“(nemokami nekomerciniams tikslams) galime lengvai naudoti būsenos mašinas, kad grafiškai modeliuotume „Otto Robot“elgesį ir sukurtume C/C ++ kodą. Mes panaudosime vieną iš jų pavyzdžių, norėdami išplėsti elgesį pagal savo skonį.
Žmonėms, kurie nežino, kas yra valstybinė mašina ir nenori raustis po sudėtingą Vikipedijos straipsnį, čia yra nedidelis paaiškinimas:
Būsenos mašina yra tik mazgai ir keliai tarp tų mazgų. Jūs turite pradinį mazgą ir galite eiti keliais į kitus mazgus, priklausomai nuo jų apsaugos, kurį gali pavaizduoti įvykiai. Šie įvykiai keliami iš pačios valstybės mašinos arba iš išorės (kaip funkcija ir pan.).
Pats įrankis naudoja „drag & drop“sąsają ir konkrečiai sričiai skirtą kalbą. Aš jums tai peržiūrėsiu, todėl jums nereikia ieškoti jų dokumentų, kad galėtumėte pradėti naudoti „Otto“. Nustatyti IDE nėra per sunku, nes visi papildiniai ir tt turėtų būti įdiegti automatiškai.
Prekės
„Otto Robot“arba „Zowi Robot“
Abu šie robotai iš esmės daro tą patį ir naudoja tą pačią API. „Otto Robot“yra „pasidaryk pats“robotas, kurio dalys internete yra paruoštos spausdinti naudojant 3D spausdintuvą, jei tokį turite. Alternatyva yra „Zowi Robot“, kurį galima įsigyti internetu ir paruoštą naudoti.
„YAKINDU Statechart Tools“
Įrankis, kurį naudosime būsenos mašinai modeliuoti. Galite pradėti nuo 30 dienų bandomojo laikotarpio ir vėliau gauti nemokamą licenciją nekomerciniam naudojimui.
„Eclipse C ++ IDE“, skirtas „Arduino“papildiniui
Mes neturime jo atsisiųsti rankiniu būdu, nes IDE tai daro už mus. Aš vis dar maniau, kad būtų malonu jį čia išvardyti.
1 žingsnis: viską nustatykite
Įdiegę IDE, paleiskite ją ir nustatykite darbo vietą bet kurioje kompiuterio vietoje (sąranka yra tokia pati, kaip naudojant „Eclipse“pirmą kartą). Kai programa bus visiškai paleista, spustelėkite pasveikinimo puslapį ir spustelėkite „Failas -> Naujas -> Pavyzdys…“, tada pasirinkite „YAKINDU būsenos diagramos pavyzdžiai“, šiek tiek palaukite ir ieškokite „Įterptosios sistemos -> Zowi (C ++))" pavyzdys.
SVARBU: Spustelėkite viršutinį dešinįjį mygtuką „Įdiegti priklausomybes …“! Tai įdiegs viską jums, todėl jums nereikės nerimauti dėl bibliotekų, papildinių ir pan. Atsisiųskite pavyzdį, vadovaukitės instrukcijomis, pateiktomis pavyzdyje „Įterptosios sistemos -> Zowi (C ++)“, ir tęskite kitą veiksmą.
2 žingsnis: supraskite, kaip sujungti Otto
Eikite į „.sct“failą ir redaguokite būsenos mašiną pagal savo skonį. Dešinėje yra meniu su visais turimais elementais. Mus domina tik būsenos ir perėjimai.
Paveikslėlyje matote, kad kai kuriuos dalykus parašiau perėjimuose; „po X“yra gana savaime suprantamas, o „visada“reiškia tik tai, kad jis eina iškart po to, kai baigia gauti kodą iš valstybės. „Įvestis /“reiškia, kad kodas turėtų būti įvykdytas iškart įėjus į būseną.
IDE surenka būsenos mašiną į C ++, kuri suderinama su „Arduino“. Norėdami naudotis „Otto“funkcijomis, turime šiek tiek padirbėti patys, kad pasiektume sąsają.
Šie raktiniai žodžiai gali būti naudojami norint apibrėžti būsimos mašinos medžiagą:
konstantos, kurios turi reikšmes ir negali būti pakeistos
kintamuosius, kurie turi reikšmes ir gali būti keičiami
operacijos, kurios bus sukurtos virtualiems C ++ metodams įgyvendinti
sąsaja:
const PIN_YL: sveikasis skaičius = 2 konst. PIN_YR: sveikasis skaičius = 3 konst. PIN_RL: sveikasis skaičius = 4 konst: sveikasis skaičius, RL: sveikasis skaičius, RR: sveikasis skaičius) operacija zowi_home () operacija zowi_putMouth (burnType: sveikasis skaičius) operacija zowi_sing (dainos pavadinimas: sveikasis skaičius) operacija zowi_walk (veiksmai: tikras, T: sveikasis skaičius, rež: sveikasis skaičius) operacija zowi_shakeLeg ()
„Pro“patarimas: jei nežinote, ką kažkur įvesti, arba atrodo, kad įvyko klaida, paspauskite „ctrl+tarpo klavišas“, kad gautumėte patarimų, ką galite įvesti.
Be to, turėtumėte pažvelgti į pavyzdžius, juose taip pat yra tam tikras kodas! Taip pat galite juos naudoti kaip struktūrą, norėdami tiesiog redaguoti modelį, kuris šiuo metu yra vienintelė mus dominanti dalis.
3 žingsnis: užpildykite spragas
Pakeitę modelio dalykus, galite dešiniuoju pelės mygtuku spustelėti „zowiSCT.sgen -> Generate Code Artifacts“. Tai sukuria virtualias funkcijas C ++, kurios būsenos mašinoje deklaruojamos į aplanką „src-gen“, kurias vėliau įgyvendiname naudodami įprastą C ++.
Tiesiog sukurkite šiuos du failus aplanke „src“, kad iš Otto gautumėte norimą funkcionalumą.
Pirmiausia impl.h
#ifndef SRC_IMPL_H_
#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtualus ~ Impl (); void zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); void zowi_home (); void zowi_putMouth (sc_integer mouthType); void zowi_sing (sc_integer songName); void zowi_walk (sc_real žingsniai, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Tada „Impl.cpp“
#include "Impl.h"
#include "../Zowi/Zowi.h" Zowi zowi = naujas Zowi (); Impl:: Impl () {} Impl:: ~ Impl () {} void Impl:: zowi_home () {zowi.home (); } negalioja Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } negalioja Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } negalioja Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } void Impl:: zowi_walk (sc_real žingsniai, sc_integer T, sc_integer dir) {zowi.walk (žingsniai, T, rež); } negalioja Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
4 žingsnis: priverskite Oto šokį
Kai esate patenkinti savo produktu, spustelėkite plaktuką viršuje kairėje ir palaukite, kol procesas bus baigtas. Tada spustelėkite žalią rodyklę plaktuko dešinėje ir pamatysite, kaip Otto šoka!
Jei norite, galite peržiūrėti kitus pavyzdžius: „YAKINDU Statechart Tools“
Rekomenduojamas:
Arduino - Labirinto sprendimo robotas („MicroMouse“) Sieninis robotas: 6 žingsniai (su paveikslėliais)
Arduino | Labirinto sprendimų robotas („MicroMouse“) Sienų sekimo robotas: Sveiki, aš esu Izaokas ir tai yra mano pirmasis robotas „Striker v1.0“. Šis robotas buvo sukurtas paprastam labirintui išspręsti. Konkurse turėjome du labirintus ir robotą sugebėjo juos identifikuoti. Dėl bet kokių kitų labirinto pakeitimų gali prireikti pakeisti
„Otto DIY“+ „Arduino“„Bluetooth“robotas, kurį lengva spausdinti 3D: 6 žingsniai (su paveikslėliais)
„Otto DIY“+ „Arduino“„Bluetooth“robotas, kurį lengva spausdinti 3D formatu: Tikrai atviro kodo „Otto“prigimtis leidžia atvirai mokytis „STEAM“, renkame atsiliepimus iš įvairių pasaulio dirbtuvių ir mokyklų, kurios jau naudoja „Otto DIY“savo klasėje, ir priklausomai nuo šios edukacinės vietos atvirumo mes arba
Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)
Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: Sveiki! Aš jums parodysiu, kaip programuoti pėsčiųjų šviesoforą „Arduino“programai C ++ naudojant ribotą būsenos mašiną naudojant „YAKINDU Statechart Tools“. Tai parodys valstybinių mašinų galią ir gali būti naudojama kaip planas tolesniam
Valstybinė mašina ir daugiafunkcinis darbas „Arduino“su SPI plėtikliais: 3 žingsniai
Valstybinė mašina ir daugiafunkcinis darbas „Arduino“naudojant „SPI Expanders“: praėjusią savaitę aš prašiau sukurti fejerverkų bandymo sistemą su arduino. Gaisrams valdyti reikėjo apie 64 išėjimų. Vienas iš būdų tai padaryti yra naudoti IC plėtiklius. Taigi galimi 2 sprendimai:- I2C plėtiklis, tačiau kai reikia
Balansavimo robotas / 3 ratų robotas / STEM robotas: 8 žingsniai
Balansavimo robotas / 3 ratų robotas / STEM robotas: Mes sukūrėme kombinuotą balansavimo ir 3 ratų robotą, skirtą naudoti mokyklose ir po pamokų. Robotas sukurtas naudojant „Arduino Uno“, pasirinktinį skydą (pateikiama visa konstrukcijos informacija), „Li Ion“akumuliatorių paketą (visa tai atitinka