INHOUDSOPGAWE:
- Voorrade
- Stap 1: Alles opstel
- Stap 2: Verstaan hoe u die Otto kan koppel
- Stap 3: Maak die gapings vol
- Stap 4: Maak die Otto -dans
Video: Arduino Otto -robot met staatsmasjien: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
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
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
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:
Staatsmasjien op Arduino - verkeerslig vir voetgangers: 6 stappe (met foto's)
Staatsmasjien op Arduino - 'n verkeerslig vir voetgangers: Haai! Ek gaan jou wys hoe om 'n voetgangerslig vir Arduino in C ++ te programmeer met 'n eindige staatsmasjien met behulp van YAKINDU Statechart Tools. Dit sal die krag van staatsmasjiene demonstreer en kan gebruik word as 'n bloudruk vir verdere
Digitale horlosie op Arduino met 'n eindige staatsmasjien: 6 stappe
Digitale horlosie op Arduino met behulp van 'n eindige staatsmasjien: hier, ek gaan jou wys hoe 'n digitale horlosie met YAKINDU Statechart Tools geskep kan word en op 'n Arduino gebruik word, wat 'n LCD -sleutelbordskerm gebruik. Die oorspronklike model van die digitale horlosie is geneem van David Harel. Hy het 'n koerant gepubliseer oor
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Staatsmasjien en multitasking op Arduino met SPI -uitbreiders: 3 stappe
Staatsmasjien en multitasking op Arduino met SPI -uitbreiders: Verlede week het ek gevra om 'n stelsel te skep om vuurwerke met 'n arduino te loods. Dit het ongeveer 64 uitsette nodig gehad om die brande te beheer. Een manier om dit te doen is om IC -uitbreiders te gebruik. Daar is dus 2 oplossings beskikbaar:- 'n I2C-uitbreiding, maar dit benodig 'n omskakelaar as u
Arduino PLC 32 I/O+staatsmasjien+SCADA of HMI: 8 stappe
Arduino PLC 32 I/O+State Machine+SCADA of HMI: Baie maniere om te programmeer, te beheer en toesig te hou oor 'n industriële stelsel met arduino