Innholdsfortegnelse:

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

Video: Arduino Otto Robot Med State Machine: 4 trinn

Video: Arduino Otto Robot Med State Machine: 4 trinn
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, Juli
Anonim
Image
Image

prosjekt oversikt

I dette prosjektet vil jeg vise deg en måte å programmere Otto Robot, som er en Arduino -basert DIY -robot. Ved å bruke YAKINDU Statechart Tools (gratis for ikke-kommersielle) kan vi enkelt bruke statlige maskiner til å grafisk modellere oppførselen til Otto Robot og generere C/C ++-kode. Vi vil bruke et av eksemplene deres for å utvide oppførselen til vår smak.

For folk som ikke vet hva en statsmaskin er og ikke vil rote gjennom den kompliserte Wikipedia -artikkelen, her er en liten forklaring:

En tilstandsmaskin er bare noder og baner mellom disse nodene. Du har en startnode og kan ta banene til andre noder avhengig av vaktene deres, som kan representeres av hendelser. Disse hendelsene heves enten fra statsmaskinen selv eller fra utsiden (som en funksjon, etc.).

Selve verktøyet bruker et dra og slipp-grensesnitt og et domenespesifikt språk. Jeg vil gå over det for deg, slik at du ikke trenger å grave gjennom dokumentasjonen deres for å få Otto i gang. Å konfigurere IDE er ikke så vanskelig, fordi alle plug-ins osv. Bør installeres automatisk.

Rekvisita

Otto Robot eller Zowi Robot

Begge disse robotene gjør i hovedsak det samme og bruker samme API. Otto Robot er en DIY -robot, med deler på nettet, klar til å skrives ut med en 3D -skriver hvis du tilfeldigvis har en. Alternativet er Zowi Robot, som kan kjøpes online og klar til bruk.

YAKINDU Statechart Tools

Verktøyet som vi skal bruke til å modellere statsmaskinen. Du kan starte med en 30 dagers prøveperiode og få en gratis lisens for ikke-kommersiell bruk etterpå.

Eclipse C ++ IDE for Arduino Plugin

Vi trenger ikke å laste det ned manuelt, fordi IDE gjør det for oss. Jeg tenkte fortsatt at det ville være fint å liste det opp her.

Trinn 1: Sette opp alt

Forstå hvordan du grensesnitt Otto
Forstå hvordan du grensesnitt Otto

Etter å ha installert IDE, kjør den og sett opp et arbeidsområde hvor som helst på din PC (oppsettet er identisk med å bruke Eclipse for første gang). Når programmet har startet helt, klikker du bort velkomstsiden og klikker på 'Fil -> Nytt -> Eksempel …' og velger deretter 'YAKINDU Statechart -eksempler', venter litt og søker etter "Embedded Systems -> Zowi (C ++)) "eksempel.

VIKTIG: Klikk på knappen øverst til høyre kalt 'Installer avhengigheter …'! Dette installerer alt for deg, slik at du ikke trenger å bekymre deg for biblioteker, plug-ins og lignende. Last ned eksemplet, følg instruksjonene i eksempelet "Embedded Systems -> Zowi (C ++)", og fortsett deretter med neste trinn.

Trinn 2: Forstå hvordan du bruker grensesnittet til Otto

Gå inn i ".sct" -filen og rediger statsmaskinen etter din smak. Til høyre er en meny med alle tilgjengelige varer. Vi er bare interessert i statene og overgangene.

På bildet kan du se at jeg skrev noen ting på overgangene; "etter X s" er ganske selvforklarende, og "alltid" betyr bare at den går dit rett etter at koden er fullført fra staten. "Oppføringen /" betyr at koden skal kjøres rett etter at staten er kommet inn.

IDE kompilerer statsmaskinen til C ++, som er Arduino -kompatibel. For å bruke funksjonene til Otto må vi gjøre litt arbeid selv for å få tilgang til grensesnittet.

Følgende søkeord kan brukes til å definere ting som statsmaskinen skal bruke:

konstanter, som holder verdier og ikke kan endres

variabler, som holder verdier og kan endres

operasjoner, som vil bli generert til virtuelle C ++ - metoder for implementering

grensesnitt:

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 operasjon zowi_init (YL: heltall, YR: heltall, RL: heltall, RR: heltall) operasjon zowi_home () operasjon zowi_putMouth (mouthType: heltall) operasjon zowi_sing (sangnavn: heltall) operasjon zowi_walk (trinn: ekte, T: heltall, dir: heltall) operasjon zowi_shakeLeg ()

Profftips: hvis du ikke vet hva du skal skrive inn et sted eller det ser ut til å være en feil, trykker du på "ctrl+mellomrom" for å få noen tips om hva du kan skrive inn.

I tillegg bør du se nærmere på eksemplene, de har også en kode der inne! Du kan også bruke dem som en struktur for å bare redigere modellen, som er den eneste delen vi er interessert i nå.

Trinn 3: Fyll hullene

Å fylle hullene
Å fylle hullene

Etter å ha endret ting i modellen, kan du høyreklikke på "zowiSCT.sgen -> Generer Code Artifacts". Dette genererer de virtuelle funksjonene i C ++, som er erklært i state-maskinen til mappen "src-gen", som vi deretter implementerer ved hjelp av normal C ++.

Bare lag disse to filene i "src" -mappen for å få funksjonaliteten vi ønsker fra 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 trinn, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Deretter vil Impl.cpp

#include "Impl.h"

#include "../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 trinn, sc_integer T, sc_integer dir) {zowi.walk (trinn, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Trinn 4: Å lage Otto Dance

Når du er fornøyd med produktet ditt, klikker du på hammeren øverst til venstre og venter på at prosessen er ferdig. Klikk deretter på den grønne pilen til høyre for hammeren og se din Otto danse!

Hvis du vil, kan du sjekke ut noen andre eksempler: YAKINDU Statechart Tools

Anbefalt: