Indholdsfortegnelse:

Arduino Otto -robot med statsmaskine: 4 trin
Arduino Otto -robot med statsmaskine: 4 trin

Video: Arduino Otto -robot med statsmaskine: 4 trin

Video: Arduino Otto -robot med statsmaskine: 4 trin
Video: Arduino ska erövra internet of things med Primo och Otto 2024, Juli
Anonim
Image
Image

Projektoversigt

I dette projekt vil jeg vise dig en måde at programmere Otto Robot, som er en Arduino baseret DIY robot. Ved hjælp af YAKINDU Statechart Tools (gratis til ikke-kommercielle) kan vi nemt bruge statsmaskiner til grafisk at modellere Otto Robotens adfærd og generere C/C ++-kode. Vi vil bruge et af deres eksempler til at udvide adfærden til vores smag.

For de mennesker, der ikke ved, hvad en statsmaskine er og ikke vil rode i den komplicerede Wikipedia -artikel, er her en lille forklaring:

En tilstandsmaskine er bare noder og stier mellem disse noder. Du har en startknude og kan tage stierne til andre noder afhængigt af deres vagter, som kan repræsenteres af begivenheder. Disse begivenheder er rejst fra enten statsmaskinen selv eller udefra (som en funktion osv.).

Selve værktøjet bruger en træk og slip-grænseflade og et domænespecifikt sprog. Jeg vil gå over det for dig, så du ikke behøver at grave igennem deres dokumentation for at få din Otto i gang. Opsætning af IDE er ikke for svært, fordi alle plug-ins osv. Skulle installeres automatisk.

Forbrugsvarer

Otto Robot eller Zowi Robot

Begge disse robotter gør i det væsentlige det samme og bruger den samme API. Otto Robot er en DIY -robot med sine dele online, klar til at blive udskrevet med en 3D -printer, hvis du tilfældigvis har en. Alternativet er Zowi Robot, som kan købes online og klar til brug.

YAKINDU Statechart -værktøjer

Værktøjet, som vi vil bruge til at modellere statsmaskinen. Du kan starte med en 30 dages prøveperiode og få en gratis licens til ikke-kommerciel brug bagefter.

Eclipse C ++ IDE til Arduino Plugin

Vi behøver ikke at downloade det manuelt, fordi IDE gør det for os. Jeg tænkte stadig, at det ville være rart at liste det her.

Trin 1: Opsætning af alt

Forståelse af grænseflade til Otto
Forståelse af grænseflade til Otto

Efter installation af IDE'en skal du køre den og oprette et arbejdsområde hvor som helst på din pc (opsætningen er identisk med at bruge Eclipse for første gang). Når programmet er startet helt, skal du klikke væk fra velkomstsiden og klikke på 'Fil -> Ny -> Eksempel …' og derefter vælge 'YAKINDU Statechart -eksempler', vente lidt og søge efter "Embedded Systems -> Zowi (C ++) "eksempel.

VIGTIGT: Klik på knappen øverst til højre kaldet 'Installer afhængigheder …'! Dette installerer alt for dig, så du ikke behøver at bekymre dig om biblioteker, plug-ins og lignende. Download eksemplet, følg instruktionerne i eksempelet "Embedded Systems -> Zowi (C ++)", og fortsæt derefter med det næste trin.

Trin 2: Forståelse af grænseflade til Otto

Gå ind i ".sct" -filen, og rediger statsmaskinen efter din smag. Til højre er en menu med alle de tilgængelige varer. Vi er kun interesserede i staterne og overgangene.

På billedet kan du se, at jeg skrev nogle ting på overgangene; "efter X s" er temmelig selvforklarende, og "altid" betyder bare, at det går der lige efter færdiggørelsen af koden fra staten. "Indgangen /" betyder, at koden skal eksekveres lige efter indtastning af staten.

IDE kompilerer statsmaskinen til C ++, som er Arduino -kompatibel. For at bruge funktionerne i Otto skal vi selv arbejde lidt med at få adgang til grænsefladen.

Følgende søgeord kan bruges til at definere ting, som statsmaskinen skal bruge:

konstanter, som holder værdier og ikke kan ændres

variabler, som holder værdier og kan ændres

operationer, som genereres til virtuelle C ++ - metoder til implementering

interface:

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 (mundtype: heltal) operation zowi_sing (sangnavn: heltal) operation zowi_walk (trin: reel, T: heltal, dir: heltal) operation zowi_shakeLeg ()

Pro Tip: hvis du ikke ved, hvad du skal indtaste et sted, eller der ser ud til at være en fejl, skal du trykke på "ctrl+mellemrum" for at få nogle tip om, hvad du kan indtaste.

Derudover bør du undersøge eksemplerne, de har også en kode derinde! Du kan også bruge dem som en struktur til bare at redigere modellen, som er den eneste del, vi er interesseret i lige nu.

Trin 3: Udfyldning af hullerne

Udfyldning af hullerne
Udfyldning af hullerne

Efter at have ændret ting i modellen kan du højreklikke på "zowiSCT.sgen -> Generer kodeartefakter". Dette genererer de virtuelle funktioner i C ++, som er erklæret i statsmaskinen til mappen "src-gen", som vi derefter implementerer ved hjælp af normal C ++.

Opret bare disse to filer i mappen "src" for at få den funktionalitet, vi ønsker fra Otto.

Først blev Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtuel ~ 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 trin, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Derefter 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 steps, sc_integer T, sc_integer dir) {zowi.walk (steps, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Trin 4: Lav Otto -dansen

Når du er tilfreds med dit produkt, skal du klikke på hammeren øverst til venstre og vente på, at processen er færdig. Klik derefter på den grønne pil til højre for hammeren og se din Otto danse!

Hvis du vil, kan du tjekke nogle andre eksempler: YAKINDU Statechart Tools

Anbefalede: