
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11


Projekt Överblick
I det här projektet vill jag visa dig ett sätt att programmera Otto Robot, som är en Arduino -baserad DIY -robot. Med hjälp av YAKINDU Statechart Tools (gratis för icke-kommersiella) kan vi enkelt använda statliga maskiner för att grafiskt modellera beteendet hos Otto Robot och generera C/C ++-kod. Vi kommer att använda ett av deras exempel för att utvidga beteendet till vårt tycke.
För de människor som inte vet vad en statsmaskin är och inte vill rota igenom den komplicerade Wikipedia -artikeln, här är en liten förklaring:
En tillståndsmaskin är bara noder och vägar mellan dessa noder. Du har en startnod och kan ta vägarna till andra noder beroende på deras vakter, som kan representeras av händelser. Dessa händelser tas upp antingen från statsmaskinen själv eller från utsidan (som en funktion, etc.).
Verktyget i sig använder ett dra och släpp-gränssnitt och ett domänspecifikt språk. Jag kommer att gå igenom det åt dig, så att du inte behöver gräva igenom deras dokumentation för att få igång din Otto. Att konfigurera IDE är inte för svårt, eftersom alla plugin-program etc. ska installeras automatiskt.
Tillbehör
Otto Robot eller Zowi Robot
Båda dessa robotar gör i huvudsak samma sak och använder samma API. Otto Robot är en DIY -robot, med sina delar online, redo att skrivas ut med en 3D -skrivare om du råkar ha en. Alternativet är Zowi Robot, som kan köpas online och redo att användas.
YAKINDU Statechart -verktyg
Verktyget som vi kommer att använda för att modellera tillståndsmaskinen. Du kan börja med en 30 dagars provperiod och få en gratis licens för icke-kommersiellt bruk efteråt.
Eclipse C ++ IDE för Arduino Plugin
Vi behöver inte ladda ner det manuellt, eftersom IDE gör det åt oss. Jag tyckte fortfarande att det skulle vara trevligt att lista det här.
Steg 1: Konfigurera allt

Efter att ha installerat IDE, kör det och ställ in en arbetsyta var som helst på din dator (installationen är identisk med att använda Eclipse för första gången). När programmet har börjat helt, klicka bort välkomstsidan och klicka på 'Arkiv -> Nytt -> Exempel …' och välj sedan 'YAKINDU Statechart Exempel', vänta lite och sök efter "Inbäddade system -> Zowi (C ++)) "exempel.
VIKTIGT: Klicka på knappen högst upp till höger som heter "Installera beroenden …"! Detta installerar allt för dig, så du behöver inte oroa dig för bibliotek, plug-ins och liknande. Ladda ner exemplet, följ instruktionerna i exemplet "Inbäddade system -> Zowi (C ++)" och fortsätt sedan med nästa steg.
Steg 2: Förstå hur man använder gränssnittet till Otto
Gå in i ".sct" -filen och redigera tillståndsmaskinen efter eget tycke. Till höger finns en meny med alla tillgängliga artiklar. Vi är bara intresserade av staterna och övergångarna.
På bilden kan du se att jag skrev några saker på övergångarna; "efter X s" är ganska självförklarande och "alltid" betyder bara att det går dit direkt efter att koden har slutförts från staten. "Posten /" betyder att koden ska köras direkt efter att staten har angetts.
IDE sammanställer tillståndsmaskinen till C ++, som är Arduino -kompatibel. För att använda funktionerna i Otto måste vi göra lite arbete själva för att komma åt gränssnittet.
Följande nyckelord kan användas för att definiera saker som statsmaskinen ska använda:
konstanter, som håller värden och inte kan ändras
variabler, som håller värden och kan ändras
operationer, som kommer att genereras till virtuella C ++ - metoder för implementering
gränssnitt:
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 operation zowi_init (YL: heltal, YR: heltal, RL: heltal, RR: heltal) operation zowi_home () operation zowi_putMouth (mouthType: integer) operation zowi_sing (songName: integer) operation zowi_walk (steg: real, T: heltal, dir: heltal) operation zowi_shakeLeg ()
Pro -tips: om du inte vet vad du ska skriva någonstans eller om det verkar vara ett fel, tryck på "ctrl+blanksteg" för att få några tips om vad du kan skriva in.
Dessutom bör du titta på exemplen, de har lite kod där också! Du kan också använda dem som en struktur för att bara redigera modellen, som är den enda delen vi är intresserade av från och med nu.
Steg 3: Fylla i luckorna

Efter att du har ändrat saker i modellen kan du högerklicka på "zowiSCT.sgen -> Generera kodartefakter". Detta genererar de virtuella funktionerna i C ++, som deklareras i tillståndsmaskinen till mappen "src-gen", som vi sedan implementerar med normal C ++.
Skapa bara dessa två filer i mappen "src" för att få den funktionalitet vi vill ha från 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 steg, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Sedan kommer Impl.cpp
#inkludera "Impl.h"
#inkludera "../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 steg, sc_integer T, sc_integer dir) {zowi.walk (steg, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
Steg 4: Gör Ottodansen
När du är nöjd med din produkt klickar du på hammaren längst upp till vänster och väntar på att processen är klar. Klicka sedan på den gröna pilen till höger om hammaren och se din Otto dansa!
Om du vill kan du kolla in några andra exempel: YAKINDU Statechart Tools
Rekommenderad:
Otto DIY+ Arduino Bluetooth Robot Lätt att 3D -utskrift: 6 steg (med bilder)

Otto DIY+ Arduino Bluetooth Robot Lätt att 3D -utskrift: Ottos verkliga öppen källkod möjliggör öppen STEAM -utbildning, vi samlar in feedback från olika verkstäder och skolor runt om i världen som redan använder Otto DIY i sitt klassrum och beroende på öppenheten för dessa utbildningsplatser vi eller
Finite State Machine på en MSP430: 6 steg

Finite State Machine på en MSP430: Jag ska visa dig hur du programmerar en MSP430G2 Launchpad med Finite State Machines (FSM) med YAKINDU Statechart Tools direkt i Texas Instruments Code Composer Studio. Denna handledning innehåller sex steg: Installera YAKINDU Statechart -verktyg som
State Machine on Arduino - ett fotgängartrafikljus: 6 steg (med bilder)

State Machine on Arduino - ett fotgängarlampa: Hej! Jag ska visa dig hur du programmerar ett fotgängarlampa för Arduino i C ++ med en ändlig tillståndsmaskin med hjälp av YAKINDU Statechart Tools. Detta kommer att visa kraften hos statsmaskiner och kan användas som en plan för ytterligare
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: 8 steg

Arduino PLC 32 I/O+State Machine+SCADA eller HMI: Många sätt att programmera, styra och övervaka ett industrisystem med arduino
Superenkel PC-kontroll av 110 Vac med ett Crydom Solid-State-relä: 3 steg (med bilder)

Superenkel PC-kontroll av 110 Vac med hjälp av ett Crydom Solid-State-relä: Jag gör mig redo att prova på att göra lite plattlödning. Därför behövde jag ett sätt att styra 110Vac från min dator. Denna instruerbara visar hur man enkelt styr 110Vac från en seriell utgångsport på en dator. Den seriella porten jag använde var en USB -typ