Innehållsförteckning:

Arduino Otto Robot Med State Machine: 4 steg
Arduino Otto Robot Med State Machine: 4 steg

Video: Arduino Otto Robot Med State Machine: 4 steg

Video: Arduino Otto Robot Med State Machine: 4 steg
Video: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, Juli
Anonim
Image
Image

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

Förstå hur man använder gränssnittet till Otto
Förstå hur man använder gränssnittet till Otto

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

Att fylla luckorna
Att fylla 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: