INHOUDSOPGAWE:

Arduino Otto -robot met staatsmasjien: 4 stappe
Arduino Otto -robot met staatsmasjien: 4 stappe

Video: Arduino Otto -robot met staatsmasjien: 4 stappe

Video: Arduino Otto -robot met staatsmasjien: 4 stappe
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, November
Anonim
Image
Image

Projek Oorsig

In hierdie projek wil ek u 'n manier wys om die Otto Robot te programmeer, 'n DIY -robot wat op Arduino gebaseer is. Met behulp van YAKINDU Statechart Tools (gratis vir nie-kommersiële) kan ons maklik staatsmasjiene gebruik om die gedrag van die Otto Robot grafies te modelleer en C/C ++ kode te genereer. Ons sal een van hulle voorbeelde gebruik om die gedrag na ons smaak uit te brei.

Hier is 'n klein verduideliking vir die mense wat nie weet wat 'n staatsmasjien is nie en nie deur die ingewikkelde Wikipedia -artikel wil soek nie:

'N Staatsmasjien is net knope en paaie tussen die nodusse. U het 'n beginknooppunt en kan die paaie na ander nodusse neem, afhangende van hul wagte, wat deur gebeurtenisse voorgestel kan word. Hierdie gebeure kom uit óf die staatsmasjien self óf van buite (soos 'n funksie, ens.).

Die instrument self gebruik 'n sleep-en-laat-koppelvlak en 'n domeinspesifieke taal. Ek sal dit vir u bespreek, sodat u nie deur hul dokumentasie hoef te gaan om u Otto aan die gang te kry nie. Die opstel van die IDE is nie te moeilik nie, want al die inproppe, ens moet outomaties geïnstalleer word.

Voorrade

Otto Robot of Zowi Robot

Beide hierdie robotte doen in wese dieselfde en gebruik dieselfde API. Die Otto Robot is 'n selfdoenrobot, met sy onderdele aanlyn, gereed om met 'n 3D -drukker gedruk te word as u een het. Die alternatief is die Zowi Robot, wat aanlyn gekoop kan word en gereed is vir gebruik.

YAKINDU Statechart Tools

Die instrument wat ons sal gebruik om die staatsmasjien te modelleer. U kan begin met 'n proeftydperk van 30 dae en daarna 'n gratis lisensie kry vir nie-kommersiële gebruik.

Eclipse C ++ IDE vir Arduino -inprop

Ons hoef dit nie met die hand af te laai nie, want die IDE doen dit vir ons. Ek het nog steeds gedink dit sal lekker wees om dit hier te noem.

Stap 1: Alles opstel

Verstaan hoe u die Otto kan koppel
Verstaan hoe u die Otto kan koppel

Nadat u die IDE geïnstalleer het, moet u dit uitvoer en 'n werkruimte op enige plek op u rekenaar opstel (die opstelling is identies aan die gebruik van Eclipse vir die eerste keer). As die program volledig begin het, klik dan op die welkombladsy en klik op 'Lêer -> Nuut -> Voorbeeld …' en kies dan 'YAKINDU Statechart -voorbeelde', wag 'n rukkie en soek na die 'Embedded Systems -> Zowi (C ++) "voorbeeld.

BELANGRIK: Klik op die knoppie regs bo met die naam 'Installeer afhanklikhede …'! Dit installeer alles vir u, sodat u nie hoef te bekommer oor biblioteke, inproppe en dies meer nie. Laai die voorbeeld af, volg die instruksies in die voorbeeld van 'Embedded Systems -> Zowi (C ++)' en gaan dan voort met die volgende stap.

Stap 2: Verstaan hoe u die Otto kan koppel

Gaan na die ".sct" lêer en wysig die staatsmasjien na u smaak. Aan die regterkant is 'n spyskaart met al die beskikbare items. Ons is slegs geïnteresseerd in die state en oorgange.

Op die foto kan u sien dat ek 'n paar goed op die oorgange geskryf het; die "na X s" is redelik selfverduidelikend en die "altyd" beteken net dat dit daarheen gaan net nadat die kode van die staat voltooi is. Die "inskrywing /" beteken dat die kode uitgevoer moet word onmiddellik nadat u die staat binnegekom het.

Die IDE stel die staatsmasjien saam na C ++, wat aan Arduino voldoen. Om die kenmerke van die Otto te gebruik, moet ons self 'n bietjie werk doen om toegang tot die koppelvlak te verkry.

Die volgende sleutelwoorde kan gebruik word om dinge vir die staatsmasjien te definieer:

konstantes, wat waardes het en nie verander kan word nie

veranderlikes wat waardes bevat en verander kan word

operasies, wat gegenereer sal word na virtuele C ++ - metodes vir implementering

koppelvlak:

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: heelgetal, YR: heelgetal, RL: heelgetal, RR: heelgetal) operasie zowi_home () operasie zowi_putMouth (mondtipe: heelgetal) operasie zowi_sing (songnaam: heelgetal) operasie zowi_walk (stappe: real, T: heelgetal, dir: heelgetal) operasie zowi_shakeLeg ()

Pro -wenk: as u nie weet wat u op 'n plek moet invoer nie, of as daar 'n fout blyk te wees, druk 'ctrl+spasie' om 'n paar wenke te kry oor wat u kan invoer.

U moet ook na die voorbeelde kyk; daar is ook 'n paar kode daarin! U kan dit ook as 'n struktuur gebruik om die model net te wysig, wat tans die enigste deel is waarin ons belangstel.

Stap 3: Maak die gapings vol

Om die leemtes te vul
Om die leemtes te vul

Nadat u dinge in die model verander het, kan u met die rechtermuisknop op die "zowiSCT.sgen -> Generate Code Artifacts" klik. Dit genereer die virtuele funksies in C ++, wat in die staatsmasjien in die gids "src-gen" verklaar word, wat ons dan implementeer met behulp van normale C ++.

Skep net hierdie twee lêers in die "src" -map om die funksie wat ons van Otto wil hê, te kry.

Eers het die Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtuele ~ Impl (); void zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); leegte zowi_home (); void zowi_putMouth (sc_integer mouthType); void zowi_sing (sc_integer songName); void zowi_walk (sc_real steps, sc_integer T, sc_integer dir); leegte zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Dan word die Impl.cpp

#sluit "Impl.h" in

#include "../Zowi/Zowi.h" Zowi zowi = nuwe 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 (); }

Stap 4: Maak die Otto -dans

As u tevrede is met u produk, klik dan op die hamer links bo en wag totdat die proses klaar is. Klik dan op die groen pyltjie regs van die hamer en sien hoe u Otto dans!

As u wil, kan u na ander voorbeelde kyk: YAKINDU Statechart Tools

Aanbeveel: