Obsah:

Robot Arduino Otto so štátnym automatom: 4 kroky
Robot Arduino Otto so štátnym automatom: 4 kroky

Video: Robot Arduino Otto so štátnym automatom: 4 kroky

Video: Robot Arduino Otto so štátnym automatom: 4 kroky
Video: Как использовать лазерный передатчик и лазерный датчик для Arduino 2024, Júl
Anonim
Image
Image

Prehľad projektu

V tomto projekte vám chcem ukázať spôsob programovania Otto Robot, čo je robot DIY založený na Arduine. Pomocou nástrojov YAKINDU Statechart Tools (zadarmo pre nekomerčné) môžeme jednoducho použiť stavové stroje na grafické modelovanie správania sa Otto Robot a generovanie kódu C/C ++. Použijeme jeden z ich príkladov na rozšírenie správania podľa našich predstáv.

Pre ľudí, ktorí nevedia, čo je to štátny stroj, a nechcú sa prehrabávať komplikovaným článkom na Wikipédii, tu je malé vysvetlenie:

Stavový stroj sú iba uzly a cesty medzi týmito uzlami. Máte počiatočný uzol a môžete prejsť cestami do iných uzlov v závislosti od ich strážcov, ktoré môžu byť reprezentované udalosťami. Tieto udalosti sú vyvolané buď samotným stavovým strojom, alebo zvonku (ako funkcia atď.).

Samotný nástroj používa rozhranie drag & drop a jazyk špecifický pre doménu. Prejdem to za vás, aby ste nemuseli prekopávať ich dokumentáciu, aby váš Otto bol v prevádzke. Nastavenie IDE nie je príliš ťažké, pretože všetky doplnky atď. By sa mali nainštalovať automaticky.

Zásoby

Otto Robot alebo Zowi Robot

Oba tieto roboty robia v zásade to isté a používajú rovnaké API. Otto Robot je robot pre domácich majstrov, ktorého časti sú online, pripravené na vytlačenie na 3D tlačiarni, ak ju náhodou máte. Alternatívou je robot Zowi, ktorý je možné kúpiť online a je pripravený na použitie.

Nástroje YAKINDU Statechart

Nástroj, ktorý použijeme na modelovanie stavového stroja. Môžete začať s 30-dňovou skúšobnou verziou a potom získate bezplatnú licenciu na nekomerčné použitie.

Eclipse C ++ IDE pre doplnok Arduino

Nemusíme ho sťahovať ručne, pretože IDE to robí za nás. Stále som si myslel, že by bolo pekné to tu uviesť.

Krok 1: Nastavenie všetkého

Pochopenie toho, ako prepojiť Otto
Pochopenie toho, ako prepojiť Otto

Po nainštalovaní IDE ho spustite a vytvorte pracovný priestor kdekoľvek na počítači (nastavenie je rovnaké ako pri prvom použití Eclipse). Keď sa program úplne spustí, kliknite na uvítaciu stránku a kliknite na „Súbor -> Nový -> Príklad …“a potom vyberte „Príklady stavového diagramu YAKINDU“, chvíľu počkajte a vyhľadajte „Vstavané systémy -> Zowi (C ++).) "príklad.

DÔLEŽITÉ: Kliknite na pravé horné tlačidlo s názvom „Inštalovať závislosti …“! Tým sa všetko nainštaluje, takže sa nemusíte starať o knižnice, doplnky a podobne. Stiahnite si príklad, postupujte podľa pokynov v príklade „Embedded Systems -> Zowi (C ++)“a potom pokračujte ďalším krokom.

Krok 2: Pochopenie toho, ako prepojiť Otto

Prejdite do súboru „.sct“a upravte stavový stroj podľa svojich predstáv. Vpravo je ponuka so všetkými dostupnými položkami. Nás zaujímajú iba stavy a prechody.

Na obrázku môžete vidieť, že som niečo napísal do prechodov; „po X s“je dosť zrozumiteľné a „vždy“znamená, že sa tam zobrazí hneď po dokončení kódu zo štátu. „Vstup /“znamená, že kód by sa mal vykonať ihneď po zadaní stavu.

IDE kompiluje stavový stroj do C ++, ktorý je kompatibilný s Arduino. Aby sme mohli používať funkcie Otta, musíme si trochu práce urobiť sami s prístupom k rozhraniu.

Nasledujúce kľúčové slová môžu byť použité na definovanie vecí, ktoré má stavový stroj používať:

konštanty, ktoré uchovávajú hodnoty a nemožno ich meniť

premenné, ktoré obsahujú hodnoty a je ich možné zmeniť

operácie, ktoré budú vygenerované do virtuálnych metód C ++ na implementáciu

rozhranie:

konšt. PIN_YL: celé číslo = 2 konšt. PIN_YR: celé číslo = 3 konšt. PIN_RL: celé číslo = 4 konšt. PIN_RR: celé číslo = 5 konšt. zvuk: celé číslo = 2 konšt. ústa_srdce: celé číslo = 13 konšt.: integer, RL: integer, RR: integer) operation zowi_home () operation zowi_putMouth (mouthType: integer) operation zowi_sing (songName: integer) operation zowi_walk (steps: real, T: integer, dir: integer) operation zowi_shakeLeg ()

Profesionálny tip: Ak na určitom mieste neviete, čo máte zadať, alebo sa zdá, že došlo k chybe, stlačením klávesu „ctrl+medzera“získate rady, čo môžete zadať.

Okrem toho by ste sa mali pozrieť na príklady, ktoré obsahujú aj kód! Môžete ich použiť aj ako štruktúru na úpravu modelu, čo je zatiaľ jediná časť, ktorá nás zaujíma.

Krok 3: Vyplnenie medzier

Vyplnenie medzier
Vyplnenie medzier

Po zmene vecí v modeli môžete pravým tlačidlom myši kliknúť na „zowiSCT.sgen -> Generovať artefakty kódu“. To generuje virtuálne funkcie v C ++, ktoré sú v stavovom počítači deklarované do priečinka „src-gen“, ktorý potom implementujeme pomocou normálneho C ++.

Vytvorte tieto dva súbory v priečinku „src“a získajte od Otta požadovanú funkcionalitu.

Najprv Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" trieda Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtuálny ~ Impl (); neplatné zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); neplatné zowi_home (); neplatné zowi_putMouth (sc_integer mouthType); neplatné zowi_sing (sc_integer songName); neplatné zowi_walk (sc_real kroky, sc_integer T, sc_integer dir); neplatné zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Potom Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = nový Zowi (); Impl:: Impl () {} Impl:: ~ Impl () {} void Impl:: zowi_home () {zowi.home (); } neplatné Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } neplatné Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } neplatné Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } neplatné Impl:: zowi_walk (sc_real kroky, sc_integer T, sc_integer dir) {zowi.walk (kroky, T, dir); } neplatné Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Krok 4: Roztancovanie Otta

Keď ste s výrobkom spokojní, kliknite na kladivo vľavo hore a počkajte, kým sa proces neskončí. Potom kliknite na zelenú šípku napravo od kladiva a uvidíte, ako tancuje váš Otto!

Ak chcete, môžete sa pozrieť na ďalšie príklady: YAKINDU Statechart Tools

Odporúča: