Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pagse-set up ng Lahat
- Hakbang 2: Pag-unawa sa Paano Mag-interface ng Otto
- Hakbang 3: Pagpuno ng mga Puwang
- Hakbang 4: Paggawa ng Otto Dance
Video: Arduino Otto Robot Sa State Machine: 4 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Pangkalahatang-ideya ng proyekto
Sa proyektong ito, nais kong ipakita sa iyo ang isang paraan ng pagprograma ng Otto Robot, na isang batay sa Arduino na DIY robot. Gamit ang YAKINDU Statechart Tools (libre para sa hindi pang-komersyo) madali naming magagamit ang mga machine ng estado upang gawing modelo ang pag-uugali ng Otto Robot at makabuo ng C / C ++ code. Gagamitin namin ang isa sa kanilang mga halimbawa upang mapalawak ang pag-uugali ayon sa gusto namin.
Para sa mga taong hindi alam kung ano ang isang makina ng estado at hindi nais na salakayin ang komplikadong artikulo sa Wikipedia, narito ang isang maliit na paliwanag:
Ang isang machine ng estado ay mga node at landas lamang sa pagitan ng mga node na iyon. Mayroon kang isang panimulang node at maaaring kumuha ng mga landas sa iba pang mga node depende sa kanilang mga bantay, na maaaring kinatawan ng mga kaganapan. Ang mga kaganapang ito ay itinaas mula sa mismong makina ng estado o mula sa labas (tulad ng isang pagpapaandar, atbp.).
Ang tool mismo ay gumagamit ng isang drag & drop interface at isang wikang tukoy sa domain. Susubukan ko ito para sa iyo, kaya hindi mo kailangang maghukay sa kanilang mga dokumentasyon upang maiayos ang iyong Otto. Ang pagse-set up ng IDE ay hindi masyadong mahirap, dahil ang lahat ng mga plug-in, atbp. Dapat awtomatikong mai-install.
Mga gamit
Otto Robot o Zowi Robot
Parehong pareho ang mga robot na ito na pareho at gumagamit ng parehong API. Ang Otto Robot ay isang DIY robot, kasama ang mga bahagi nito sa online, handa nang mai-print sa isang 3D printer kung sakaling magkaroon ka nito. Ang kahalili ay ang Zowi Robot, na maaaring mabili online at handa nang gamitin.
YAKINDU Statechart Tools
Ang tool na gagamitin namin upang i-modelo ang machine ng estado. Maaari kang magsimula sa isang 30 araw na pagsubok at makakuha ng isang libreng lisensya para sa hindi komersyal na paggamit pagkatapos.
Eclipse C ++ IDE para sa Arduino Plugin
Hindi namin ito kailangang i-download nang manu-mano, dahil ginagawa ito ng IDE para sa amin. Naisip ko pa rin na masarap itong ilista dito.
Hakbang 1: Pagse-set up ng Lahat
Matapos mai-install ang IDE, patakbuhin ito at i-set up ang isang workspace kahit saan sa iyong pc (ang setup ay magkapareho sa paggamit ng Eclipse sa unang pagkakataon). Kapag ang programa ay nagsimula nang ganap, mag-click sa malugod na pahina at mag-click sa 'File -> Bago -> Halimbawa…' at pagkatapos ay piliin ang 'Mga Halimbawa ng YAKINDU Statechart', maghintay ng kaunti at hanapin ang "Mga naka-embed na Sistema -> Zowi (C ++) "halimbawa.
MAHALAGA: Mag-click sa kanang tuktok na pindutan na tinatawag na 'Pag-install ng Mga Depende …'! Ini-install nito ang lahat para sa iyo, kaya't hindi ka dapat magalala tungkol sa Mga Aklatan, Plug-Ins at mga katulad nito. I-download ang halimbawa, sundin ang mga tagubilin sa halimbawang "Embedded Systems -> Zowi (C ++)" at pagkatapos ay magpatuloy sa susunod na hakbang.
Hakbang 2: Pag-unawa sa Paano Mag-interface ng Otto
Pumunta sa file na ".sct" at i-edit ang machine ng estado ayon sa gusto mo. Sa kanan ay isang menu na magagamit ang lahat ng mga item. Interesado lamang kami sa mga estado at transisyon.
Sa larawan, makikita mo, na nagsulat ako ng ilang mga bagay-bagay sa mga pagbabago; ang "pagkatapos ng X s" ay medyo nagpapaliwanag sa sarili at ang "palaging" ay nangangahulugang, na pupunta doon pagkatapos matapos ang code mula sa Estado. Ang ibig sabihin ng "entry /", na ang code ay dapat na ipatupad pagkatapos na ipasok ang estado.
Pinagsasama ng IDE ang machine ng estado sa C ++, na kung saan ay sumusunod sa Arduino. Upang magamit ang mga tampok ng Otto, kailangan naming gumawa ng kaunting trabaho sa aming sarili sa pag-access sa interface.
Ang mga sumusunod na keyword ay maaaring gamitin upang tukuyin ang mga bagay-bagay para magamit ng state machine:
mga pare-pareho, na humahawak ng mga halaga at hindi mababago
mga variable, na humahawak ng mga halaga at maaaring mabago
mga pagpapatakbo, na malilikha sa mga virtual na pamamaraan ng C ++ para sa pagpapatupad
interface:
const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const sound: integer = 2 const mouth_heart: integer = 13 const mouth_happyOpen: integer = 11 pagpapatakbo zowi_init (YL: integer, YR: integer, RL: integer, RR: integer) operasyon zowi_home () operasyon zowi_putMouth (mouthType: integer) operasyon zowi_sing (songName: integer) operasyon zowi_walk (mga hakbang: real, T: integer, dir: integer) operasyon zowi_shakeLeg ()
Pro Tip: kung hindi mo alam kung ano ang ipasok sa isang lugar o tila may isang error, pindutin ang "ctrl + space" upang makakuha ng ilang mga pahiwatig sa kung ano ang maaari mong ipasok.
Bilang karagdagan, dapat mong tingnan ang mga halimbawa, mayroon silang ilang mga code doon din! Maaari mo ring gamitin ang mga ito bilang isang istraktura upang mai-edit lamang ang modelo, na kung saan ay ang tanging bahagi na interesado kami sa ngayon.
Hakbang 3: Pagpuno ng mga Puwang
Matapos baguhin ang mga bagay sa modelo maaari kang mag-right click sa "zowiSCT.sgen -> Bumuo ng Mga Code ng Arteact". Bumubuo ito ng mga virtual na pag-andar sa C ++, na idineklara sa machine ng estado sa folder na "src-gen", na pagkatapos ay ipinatupad namin gamit ang normal na C ++.
Lumikha lamang ng dalawang mga file na ito sa folder na "src" upang makuha ang pag-andar na nais namin mula sa Otto.
Una ang Impl.h
#ifndef SRC_IMPL_H_
#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtual ~ Impl (); walang bisa zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); walang bisa zowi_home (); walang bisa zowi_putMouth (sc_integer bibigType); walang bisa zowi_sing (sc_integer songName); void zowi_walk (sc_real steps, sc_integer T, sc_integer dir); walang bisa zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Pagkatapos ang Impl.cpp
# isama ang "Impl.h"
# isama ang "../Zowi/Zowi.h" Zowi zowi = bagong Zowi (); Impl:: Impl () {} Impl:: ~ Impl () {} void Impl:: zowi_home () {zowi.home (); } void Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } void Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } void Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } void Impl:: zowi_walk (sc_real steps, sc_integer T, sc_integer dir) {zowi.walk (hakbang, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
Hakbang 4: Paggawa ng Otto Dance
Kapag masaya ka sa iyong produkto, mag-click sa martilyo sa kaliwang tuktok at hintaying matapos ang proseso. Pagkatapos mag-click sa berdeng arrow sa kanan ng martilyo at makita ang iyong Otto sumasayaw!
Kung nais mo, maaari mong suriin ang ilang iba pang mga halimbawa: YAKINDU Statechart Tools
Inirerekumendang:
Ang Finite State Machine sa isang MSP430: 6 na Hakbang
Ang Finite State Machine sa isang MSP430: Ipapakita ko sa iyo kung paano mag-program ng isang MSP430G2 Launchpad na may Finite State Machines (FSM) na gumagamit ng YAKINDU Statechart Tools nang direkta sa Texas Instruments Code Composer Studio. Naglalaman ang tutorial na ito ng anim na hakbang: Pag-install ng YAKINDU Statechart Tools bilang
State Machine sa Arduino - isang Light ng Trapiko ng Pedestrian: 6 na Hakbang (na may Mga Larawan)
State Machine sa Arduino - isang Banayad na Trapiko ng Pedestrian: Hoy diyan! Ipapakita ko sa iyo kung paano mag-program ng ilaw ng trapiko para sa Arduino sa C ++ gamit ang isang may takdang makina ng estado sa pamamagitan ng paggamit ng YAKINDU Statechart Tools. Ipapakita nito ang lakas ng mga machine ng estado at maaaring magamit bilang isang blueprint para sa karagdagang
Digital Watch sa Arduino Gamit ang isang Finite State Machine: 6 Mga Hakbang
Digital Watch sa Arduino Gamit ang isang Finite State Machine: Hoy, ipapakita ko sa iyo kung paano malilikha ang isang digital na relo gamit ang YAKINDU Statechart Tools at patakbuhin ang isang Arduino, na gumagamit ng isang LCD Keypad Shield. Ang orihinal na modelo ng digital ang relo ay kinuha mula kay David Harel. Nag-publish siya ng isang papel na abou
State Machine at Multitasking sa Arduino Sa Mga SPI Expander: 3 Hakbang
State Machine at Multitasking on Arduino With SPI Expanders: Noong nakaraang linggo, humihiling ako na lumikha ng isang sistema upang mag-pilot ng paputok sa isang arduino. Kailangan nito ng halos 64 output upang makontrol ang sunog. Ang isang paraan upang magawa ito ay ang paggamit ng mga nagpapalawak ng IC. Kaya 2 mga solusyon ay magagamit: - isang I2C expander ngunit kailangan ito ng inverter kapag ka
Arduino PLC 32 I / O + State Machine + SCADA o HMI: 8 Hakbang
Arduino PLC 32 I / O + State Machine + SCADA o HMI: Maraming paraan upang mag-program, upang makontrol at mapangasiwaan ang isang pang-industriya na system na may arduino