Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Sette opp alt
- Trinn 2: Forstå hvordan du bruker grensesnittet til Otto
- Trinn 3: Fyll hullene
- Trinn 4: Å lage Otto Dance
Video: Arduino Otto Robot Med State Machine: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
prosjekt oversikt
I dette prosjektet vil jeg vise deg en måte å programmere Otto Robot, som er en Arduino -basert DIY -robot. Ved å bruke YAKINDU Statechart Tools (gratis for ikke-kommersielle) kan vi enkelt bruke statlige maskiner til å grafisk modellere oppførselen til Otto Robot og generere C/C ++-kode. Vi vil bruke et av eksemplene deres for å utvide oppførselen til vår smak.
For folk som ikke vet hva en statsmaskin er og ikke vil rote gjennom den kompliserte Wikipedia -artikkelen, her er en liten forklaring:
En tilstandsmaskin er bare noder og baner mellom disse nodene. Du har en startnode og kan ta banene til andre noder avhengig av vaktene deres, som kan representeres av hendelser. Disse hendelsene heves enten fra statsmaskinen selv eller fra utsiden (som en funksjon, etc.).
Selve verktøyet bruker et dra og slipp-grensesnitt og et domenespesifikt språk. Jeg vil gå over det for deg, slik at du ikke trenger å grave gjennom dokumentasjonen deres for å få Otto i gang. Å konfigurere IDE er ikke så vanskelig, fordi alle plug-ins osv. Bør installeres automatisk.
Rekvisita
Otto Robot eller Zowi Robot
Begge disse robotene gjør i hovedsak det samme og bruker samme API. Otto Robot er en DIY -robot, med deler på nettet, klar til å skrives ut med en 3D -skriver hvis du tilfeldigvis har en. Alternativet er Zowi Robot, som kan kjøpes online og klar til bruk.
YAKINDU Statechart Tools
Verktøyet som vi skal bruke til å modellere statsmaskinen. Du kan starte med en 30 dagers prøveperiode og få en gratis lisens for ikke-kommersiell bruk etterpå.
Eclipse C ++ IDE for Arduino Plugin
Vi trenger ikke å laste det ned manuelt, fordi IDE gjør det for oss. Jeg tenkte fortsatt at det ville være fint å liste det opp her.
Trinn 1: Sette opp alt
Etter å ha installert IDE, kjør den og sett opp et arbeidsområde hvor som helst på din PC (oppsettet er identisk med å bruke Eclipse for første gang). Når programmet har startet helt, klikker du bort velkomstsiden og klikker på 'Fil -> Nytt -> Eksempel …' og velger deretter 'YAKINDU Statechart -eksempler', venter litt og søker etter "Embedded Systems -> Zowi (C ++)) "eksempel.
VIKTIG: Klikk på knappen øverst til høyre kalt 'Installer avhengigheter …'! Dette installerer alt for deg, slik at du ikke trenger å bekymre deg for biblioteker, plug-ins og lignende. Last ned eksemplet, følg instruksjonene i eksempelet "Embedded Systems -> Zowi (C ++)", og fortsett deretter med neste trinn.
Trinn 2: Forstå hvordan du bruker grensesnittet til Otto
Gå inn i ".sct" -filen og rediger statsmaskinen etter din smak. Til høyre er en meny med alle tilgjengelige varer. Vi er bare interessert i statene og overgangene.
På bildet kan du se at jeg skrev noen ting på overgangene; "etter X s" er ganske selvforklarende, og "alltid" betyr bare at den går dit rett etter at koden er fullført fra staten. "Oppføringen /" betyr at koden skal kjøres rett etter at staten er kommet inn.
IDE kompilerer statsmaskinen til C ++, som er Arduino -kompatibel. For å bruke funksjonene til Otto må vi gjøre litt arbeid selv for å få tilgang til grensesnittet.
Følgende søkeord kan brukes til å definere ting som statsmaskinen skal bruke:
konstanter, som holder verdier og ikke kan endres
variabler, som holder verdier og kan endres
operasjoner, som vil bli generert til virtuelle C ++ - metoder for implementering
grensesnitt:
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 operasjon zowi_init (YL: heltall, YR: heltall, RL: heltall, RR: heltall) operasjon zowi_home () operasjon zowi_putMouth (mouthType: heltall) operasjon zowi_sing (sangnavn: heltall) operasjon zowi_walk (trinn: ekte, T: heltall, dir: heltall) operasjon zowi_shakeLeg ()
Profftips: hvis du ikke vet hva du skal skrive inn et sted eller det ser ut til å være en feil, trykker du på "ctrl+mellomrom" for å få noen tips om hva du kan skrive inn.
I tillegg bør du se nærmere på eksemplene, de har også en kode der inne! Du kan også bruke dem som en struktur for å bare redigere modellen, som er den eneste delen vi er interessert i nå.
Trinn 3: Fyll hullene
Etter å ha endret ting i modellen, kan du høyreklikke på "zowiSCT.sgen -> Generer Code Artifacts". Dette genererer de virtuelle funksjonene i C ++, som er erklært i state-maskinen til mappen "src-gen", som vi deretter implementerer ved hjelp av normal C ++.
Bare lag disse to filene i "src" -mappen for å få funksjonaliteten vi ønsker fra Otto.
Først Impl.h
#ifndef SRC_IMPL_H_
#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtuell ~ 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 trinn, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Deretter vil Impl.cpp
#include "Impl.h"
#include "../Zowi/Zowi.h" Zowi zowi = ny 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 trinn, sc_integer T, sc_integer dir) {zowi.walk (trinn, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
Trinn 4: Å lage Otto Dance
Når du er fornøyd med produktet ditt, klikker du på hammeren øverst til venstre og venter på at prosessen er ferdig. Klikk deretter på den grønne pilen til høyre for hammeren og se din Otto danse!
Hvis du vil, kan du sjekke ut noen andre eksempler: YAKINDU Statechart Tools
Anbefalt:
Otto DIY+ Arduino Bluetooth Robot Enkel til 3D -utskrift: 6 trinn (med bilder)
Otto DIY+ Arduino Bluetooth Robot Enkel til 3D -utskrift: Virkelig åpen kildekode til Otto tillater åpen STEAM -utdanning, vi samler tilbakemeldinger fra forskjellige verksteder og skoler rundt om i verden som allerede bruker Otto DIY i klasserommet og avhengig av åpenheten til disse utdanningsstedene vi eller
Finite State Machine på en MSP430: 6 trinn
Finite State Machine på en MSP430: Jeg skal vise deg hvordan du programmerer en MSP430G2 Launchpad med Finite State Machines (FSM) ved hjelp av YAKINDU Statechart Tools direkte i Texas Instruments Code Composer Studio. Denne opplæringen inneholder seks trinn: Installere YAKINDU Statechart Tools som
State Machine on Arduino - et fotgjengerlys: 6 trinn (med bilder)
State Machine på Arduino - et fotgjengerlys: Hei! Jeg skal vise deg hvordan du programmerer et trafikklys for Arduino i C ++ med en endelig tilstandsmaskin ved å bruke YAKINDU Statechart Tools. Dette vil demonstrere kraften til statlige maskiner og kan brukes som en plan for videre
State Machine og Multitasking på Arduino med SPI -utvidere: 3 trinn
State Machine and Multitasking on Arduino With SPI Expanders: I forrige uke ba jeg om å lage et system for å styre fyrverkeri med en arduino. Den trengte om lag 64 utganger for å kontrollere brannene. En måte å gjøre det på er å bruke IC -utvidere. Så to løsninger er tilgjengelige:- en I2C-ekspander, men den trenger inverter når du
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: 8 trinn
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: Mange måter å programmere, kontrollere og overvåke et industrisystem med arduino