Sadržaj:

Arduino Otto Robot sa državnom mašinom: 4 koraka
Arduino Otto Robot sa državnom mašinom: 4 koraka

Video: Arduino Otto Robot sa državnom mašinom: 4 koraka

Video: Arduino Otto Robot sa državnom mašinom: 4 koraka
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Novembar
Anonim
Image
Image

Pregled projekta

U ovom projektu želim vam pokazati način programiranja Otto Robota, koji je DIY robot zasnovan na Arduinu. Korištenjem YAKINDU alata za dijagrame stanja (besplatnih za nekomercijalne svrhe) možemo lako koristiti strojeve stanja za grafičko modeliranje ponašanja Otto robota i generiranje C/C ++ koda. Upotrijebit ćemo jedan od njihovih primjera da proširimo ponašanje prema našim željama.

Za ljude koji ne znaju šta je državna mašina i ne žele prebirati po kompliciranom članku na Wikipediji, evo malog objašnjenja:

Državna mašina su samo čvorovi i putanje između tih čvorova. Imate početni čvor i možete krenuti putem do drugih čvorova ovisno o njihovom čuvaru, koji se može predstaviti događajima. Ti se događaji pokreću ili sa same mašine stanja ili izvana (poput funkcije itd.).

Alat sam koristi drag & drop sučelje i jezik specifičan za domenu. Provjerit ću to umjesto vas, tako da ne morate kopati po njihovoj dokumentaciji da biste pokrenuli svog Otta. Postavljanje IDE-a nije previše teško, jer bi se svi dodaci itd. Trebali instalirati automatski.

Supplies

Otto Robot ili Zowi Robot

Oba ova robota u osnovi rade isto i koriste isti API. Otto Robot je DIY robot, sa svojim dijelovima na mreži, spreman za štampanje 3D štampačem ako ga imate. Alternativa je Zowi Robot, koji se može kupiti na mreži i spreman za upotrebu.

YAKINDU Alati dijagrama stanja

Alat koji ćemo koristiti za modeliranje državne mašine. Možete započeti s probnim periodom od 30 dana i nakon toga dobiti besplatnu licencu za nekomercijalnu upotrebu.

Eclipse C ++ IDE za Arduino dodatak

Ne moramo ga preuzimati ručno, jer IDE to radi umjesto nas. I dalje sam mislio da bi bilo lijepo navesti ga ovdje.

Korak 1: Postavljanje svega

Razumijevanje načina povezivanja Otto -a
Razumijevanje načina povezivanja Otto -a

Nakon instaliranja IDE -a, pokrenite ga i postavite radni prostor bilo gdje na računaru (postavka je identična kao kada prvi put koristite Eclipse). Kada se program u potpunosti pokrene, kliknite stranu dobrodošlice i kliknite na 'Datoteka -> Novo -> Primjer …', a zatim odaberite 'Primjeri grafikona stanja YAKINDU', pričekajte malo i potražite "Ugrađeni sustavi -> Zowi (C ++) "primjer.

VAŽNO: Kliknite na gornji desni gumb pod nazivom "Instaliraj zavisnosti …"! Ovo vam instalira sve, tako da ne morate brinuti o bibliotekama, dodacima i slično. Preuzmite primjer, slijedite upute u primjeru "Ugrađeni sistemi -> Zowi (C ++)", a zatim nastavite sa sljedećim korakom.

Korak 2: Razumijevanje načina povezivanja Otto -a

Idite u datoteku ".sct" i uredite mašinu stanja po svom ukusu. S desne strane nalazi se izbornik sa svim dostupnim stavkama. Zanimaju nas samo stanja i prijelazi.

Na slici možete vidjeti da sam napisao neke stvari o prijelazima; "nakon X s" prilično je razumljivo samo po sebi, a "uvijek" samo znači da ide tamo odmah nakon završetka koda iz države. "Unos /" znači da se kod treba izvršiti odmah nakon ulaska u stanje.

IDE kompajlira državnu mašinu u C ++, koji je usklađen sa Arduinom. Da bismo koristili značajke Otto -a, moramo sami malo raditi na pristupu sučelju.

Sljedeće ključne riječi mogu se koristiti za definiranje stvari koje će državni stroj koristiti:

konstante koje drže vrijednosti i ne mogu se mijenjati

promenljive, koje drže vrednosti i mogu se menjati

operacije, koje će se generirati na virtualne C ++ metode za implementaciju

interfejs:

const PIN_YL: cijeli broj = 2 const PIN_YR: cijeli broj = 3 const PIN_RL: cijeli broj = 4 const PIN_RR: cijeli broj = 5 const zvuk: cijeli broj = 2 const usta_srca: cijeli broj = 13 const mouth_happyOpen: cijeli broj = 11 operacija zowi_init (YL: cijeli broj, YR: integer, RL: integer, RR: integer) operacija zowi_home () operacija zowi_putMouth (tip usta: integer) operacija zowi_sing (naziv pjesme: cijeli broj) operacija zowi_walk (koraci: real, T: cijeli broj, dir: cijeli broj) operacija zowi_shakeLeg ()

Profesionalni savjet: ako ne znate što želite unijeti ili se čini da je došlo do greške, pritisnite "ctrl+razmak" da biste dobili neke savjete o tome šta možete unijeti.

Osim toga, trebali biste pogledati primjere, jer oni imaju i neki kod! Možete ih koristiti i kao strukturu za samo uređivanje modela, što je jedini dio koji nas trenutno zanima.

Korak 3: Popunjavanje praznina

Popunjavanje praznina
Popunjavanje praznina

Nakon što promijenite stvari u modelu, možete desnom tipkom miša kliknuti na "zowiSCT.sgen -> Generiraj artefakte koda". Ovo generira virtualne funkcije u C ++, koje su na državnom stroju deklarirane u mapu "src-gen", koju zatim implementiramo pomoću normalnog C ++.

Samo stvorite ove dvije datoteke u mapi "src" da biste dobili funkcionalnost koju želimo od Otta.

Prvo Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: javni ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtual ~ 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 koraci, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Zatim Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = novi 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 koraci, sc_integer T, sc_integer dir) {zowi.walk (koraci, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Korak 4: Utvrdite Otto ples

Kada ste zadovoljni sa svojim proizvodom, kliknite na čekić u gornjem lijevom kutu i pričekajte da se proces završi. Zatim kliknite na zelenu strelicu desno od čekića i pogledajte svog Otta kako pleše!

Ako želite, možete pogledati neke druge primjere: YAKINDU Alati grafikona stanja

Preporučuje se: