
Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04


rezumatul proiectului
În acest proiect, vreau să vă arăt un mod de programare a robotului Otto, care este un robot DIY bazat pe Arduino. Folosind YAKINDU Statechart Tools (gratuit pentru necomercial) putem folosi cu ușurință mașini de stat pentru a modela grafic comportamentul robotului Otto și a genera cod C / C ++. Vom folosi unul dintre exemplele lor pentru a extinde comportamentul după bunul nostru plac.
Pentru persoanele care nu știu ce este o mașină de stat și nu doresc să scotocească articolul complicat de pe Wikipedia, iată o mică explicație:
O mașină de stare este doar noduri și căi între aceste noduri. Aveți un nod de pornire și puteți lua căile către alte noduri în funcție de pazele lor, care pot fi reprezentate de evenimente. Aceste evenimente sunt generate fie de mașina de stat în sine, fie din exterior (cum ar fi o funcție etc.).
Instrumentul în sine folosește o interfață drag & drop și un limbaj specific domeniului. Voi trece peste asta pentru tine, așa că nu trebuie să le cercetezi documentația pentru a pune Otto în funcțiune. Configurarea IDE nu este prea dificilă, deoarece toate pluginurile etc. ar trebui instalate automat.
Provizii
Robotul Otto sau Robotul Zowi
Ambii roboți fac în esență același lucru și folosesc același API. Robotul Otto este un robot DIY, cu piesele sale online, gata să fie tipărit cu o imprimantă 3D dacă se întâmplă să aveți una. Alternativa este robotul Zowi, care poate fi achiziționat online și gata de utilizare.
Instrumente YAKINDU Statechart
Instrumentul pe care îl vom folosi pentru a modela mașina de stare. Puteți începe cu o perioadă de încercare de 30 de zile și puteți obține o licență gratuită pentru utilizare necomercială ulterior.
Eclipse C ++ IDE pentru pluginul Arduino
Nu trebuie să-l descărcăm manual, deoarece IDE o face pentru noi. Încă m-am gândit că ar fi frumos să o enumăr aici.
Pasul 1: Configurarea totul

După instalarea IDE, rulați-l și configurați un spațiu de lucru oriunde pe computerul dvs. (configurarea este identică cu utilizarea Eclipse pentru prima dată). Când programul a început complet, faceți clic pe pagina de întâmpinare și faceți clic pe „Fișier -> Nou -> Exemplu…” și apoi selectați „Exemple de grafice YAKINDU”, așteptați puțin și căutați „Sisteme încorporate -> Zowi (C ++)) "exemplu.
IMPORTANT: Faceți clic pe butonul din dreapta sus numit „Instalați dependențe…”! Acest lucru instalează totul pentru dvs., deci nu trebuie să vă faceți griji cu privire la biblioteci, pluginuri și altele asemenea. Descărcați exemplul, urmați instrucțiunile din exemplul „Sisteme încorporate -> Zowi (C ++)” și apoi continuați cu pasul următor.
Pasul 2: Înțelegerea modului de interfață Otto
Accesați fișierul „.sct” și editați mașina de stare după bunul plac. În dreapta este un meniu cu toate elementele disponibile. Ne interesează doar statele și tranzițiile.
În imagine, puteți vedea, că am scris câteva lucruri în tranziții; „după X s” este destul de auto-explicativ și „întotdeauna” înseamnă doar că merge acolo imediat după terminarea codului din stat. „Intrare /” înseamnă că codul trebuie executat imediat după intrarea în stat.
IDE compilează mașina de stat în C ++, care este conform Arduino. Pentru a utiliza caracteristicile sistemului Otto, trebuie să lucrăm singuri accesând interfața.
Următoarele cuvinte cheie pot fi utilizate pentru a defini lucruri pe care le poate folosi mașina de stări:
constante, care dețin valori și nu pot fi modificate
variabile, care dețin valori și pot fi modificate
operațiuni, care vor fi generate la metode virtuale C ++ pentru implementare
interfață:
const PIN_YL: întreg = 2 const PIN_YR: întreg = 3 const PIN_RL: întreg = 4 const PIN_RR: întreg = 5 const sunet: întreg = 2 const gură_heart: întreg = 13 const gură_happy Deschis: întreg = 11 operație zowi_init (YL: întreg, YR: întreg, RL: întreg, RR: întreg) operație zowi_home () operație zowi_putMouth (tip de gură: întreg) operație zowi_sing (numeCântec: întreg) operație zowi_walk (pași: real, T: întreg, dir: întreg) operație zowi_shakeLeg ()
Sfat Pro: dacă nu știți ce să introduceți undeva sau pare să existe o eroare, apăsați „ctrl + spațiu” pentru a obține câteva sugestii despre ce puteți introduce.
În plus, ar trebui să te uiți în exemple, au și unele coduri acolo! De asemenea, le puteți utiliza ca structură pentru a edita doar modelul, care este singura parte care ne interesează de acum.
Pasul 3: Umplerea golurilor

După ce schimbați lucrurile din model, puteți face clic dreapta pe „zowiSCT.sgen -> Generați artefacte de cod”. Aceasta generează funcțiile virtuale în C ++, care sunt declarate în mașina de stat în folderul „src-gen”, pe care apoi îl implementăm folosind C ++ normal.
Creați aceste două fișiere în folderul „src” pentru a obține funcționalitatea pe care o dorim de la Otto.
Mai întâi 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 (); 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 step, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Apoi, Impl.cpp
#include „Impl.h”
#include "../Zowi/Zowi.h" Zowi zowi = new 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 (steps, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
Pasul 4: Realizarea dansului Otto
Când sunteți mulțumit de produsul dvs., faceți clic pe ciocanul din stânga sus și așteptați finalizarea procesului. Apoi faceți clic pe săgeata verde din dreapta ciocanului și vedeți-vă dansul Otto!
Dacă doriți, puteți consulta câteva alte exemple: YAKINDU Statechart Tools
Recomandat:
Otto DIY + Arduino Bluetooth Robot ușor de imprimat 3D: 6 pași (cu imagini)

Otto DIY + Arduino Bluetooth Robot ușor de imprimat 3D: Natura cu adevărat open source a Otto permite educația deschisă STEAM, colectăm feedback de la diferite ateliere și școli din întreaga lume care folosesc deja Otto DIY în clasa lor și în funcție de deschiderea acestor locuri educaționale noi sau
Intrare în mașină biometrică - Mașină adevărată fără cheie: 4 pași

Intrare în mașină biometrică - Mașină adevărată fără cheie: Cu câteva luni în urmă, fiica mea m-a întrebat, de ce mașinile moderne nu sunt echipate cu sistem de intrare bio-metrică, chiar dacă un telefon mobil îl are. De atunci lucra la implementarea aceluiași și în cele din urmă a reușit să instalez și să testez ceva pe T
Cum să controlați becul folosind modulul Arduino UNO și modulul de releu de stat solid cu un singur canal 5V: 3 pași

Cum să controlați becul utilizând modulul de releu de stare solidă Arduino UNO și un canal 5V: Descriere: Comparativ cu releul mecanic tradițional, releul de stare solidă (SSR) are multe avantaje: are o durată de viață mai lungă, cu o pornire mult mai mare / viteza de oprire și fără zgomot. În plus, are și o rezistență mai bună la vibrații și mecanică
FinduCar: o cheie inteligentă pentru mașină care ghidează oamenii către locul unde este parcată mașina: 11 pași (cu imagini)

FinduCar: o cheie pentru mașină inteligentă, care ghidează oamenii către locul unde este parcată mașina: Pentru a rezolva problemele de mai sus, acest proiect propune dezvoltarea unei chei pentru mașini inteligente care ar putea direcționa oamenii către locul în care au parcat mașina. Și planul meu este integrarea unui GPS în cheia mașinii. Nu este nevoie să utilizați aplicația smartphone pentru a urmări
Arduino PLC 32 I / O + Mașină de stat + SCADA sau HMI: 8 pași

Arduino PLC 32 I / O + Mașină de stat + SCADA sau HMI: Multe moduri de a programa, controla și supraveghea un sistem industrial cu arduino