Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Alles einrichten
- Schritt 2: Verstehen, wie man den Otto anschließt
- Schritt 3: Füllen der Lücken
- Schritt 4: Den Otto-Tanz machen
Video: Arduino Otto-Roboter mit Zustandsmaschine - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Projektübersicht
In diesem Projekt möchte ich Ihnen eine Möglichkeit zeigen, den Otto Robot zu programmieren, einen Arduino-basierten DIY-Roboter. Mit YAKINDU Statechart Tools (kostenlos für nicht-kommerzielle) können wir Zustandsautomaten einfach verwenden, um das Verhalten des Otto Robot grafisch zu modellieren und C/C++-Code zu generieren. Wir werden eines ihrer Beispiele verwenden, um das Verhalten nach unserem Geschmack zu erweitern.
Für die Leute, die nicht wissen, was eine Zustandsmaschine ist und nicht den komplizierten Wikipedia-Artikel durchwühlen wollen, hier eine kleine Erklärung:
Eine Zustandsmaschine besteht nur aus Knoten und Pfaden zwischen diesen Knoten. Sie haben einen Startknoten und können die Pfade zu anderen Knoten in Abhängigkeit von deren Wachen nehmen, die durch Ereignisse dargestellt werden können. Diese Ereignisse werden entweder von der Zustandsmaschine selbst oder von außen (wie eine Funktion usw.) ausgelöst.
Das Tool selbst verwendet eine Drag&Drop-Oberfläche und eine domänenspezifische Sprache. Ich werde es für Sie durchgehen, damit Sie nicht durch die Dokumentation wühlen müssen, um Ihren Otto zum Laufen zu bringen. Das Einrichten der IDE ist nicht allzu schwer, da alle Plug-Ins usw. automatisch installiert werden sollten.
Lieferungen
Otto-Roboter oder Zowi-Roboter
Beide Roboter machen im Wesentlichen dasselbe und verwenden dieselbe API. Der Otto Robot ist ein DIY-Roboter, dessen Teile online sind und mit einem 3D-Drucker gedruckt werden können, falls Sie einen haben. Die Alternative ist der Zowi Robot, der online gekauft und sofort einsatzbereit ist.
YAKINDU Statechart-Tools
Das Werkzeug, das wir verwenden werden, um die Zustandsmaschine zu modellieren. Sie können mit einer 30-tägigen Testversion beginnen und anschließend eine kostenlose Lizenz für die nicht-kommerzielle Nutzung erhalten.
Eclipse C++ IDE für Arduino Plugin
Wir müssen es nicht manuell herunterladen, weil die IDE es für uns erledigt. Ich dachte immer noch, es wäre schön, es hier aufzulisten.
Schritt 1: Alles einrichten
Nachdem Sie die IDE installiert haben, führen Sie sie aus und richten Sie einen Arbeitsbereich an einer beliebigen Stelle auf Ihrem PC ein (das Setup ist identisch mit der erstmaligen Verwendung von Eclipse). Wenn das Programm vollständig gestartet ist, klicken Sie die Willkommensseite weg und klicken Sie auf 'Datei -> Neu -> Beispiel…' und wählen Sie dann 'YAKINDU Statechart Beispiele', warten Sie etwas und suchen Sie nach "Embedded Systems -> Zowi (C++.))" Beispiel.
WICHTIG: Klicken Sie oben rechts auf die Schaltfläche 'Abhängigkeiten installieren…'! Dies installiert alles für Sie, sodass Sie sich nicht um Bibliotheken, Plug-Ins und ähnliches kümmern müssen. Laden Sie das Beispiel herunter, folgen Sie den Anweisungen im Beispiel "Embedded Systems -> Zowi (C++)" und fahren Sie dann mit dem nächsten Schritt fort.
Schritt 2: Verstehen, wie man den Otto anschließt
Gehen Sie in die Datei ".sct" und bearbeiten Sie den Zustandsautomaten nach Ihren Wünschen. Auf der rechten Seite befindet sich ein Menü mit allen verfügbaren Elementen. Uns interessieren nur die Zustände und Übergänge.
Auf dem Bild sieht man, dass ich einiges an die Übergänge geschrieben habe; das "nach X s" ist ziemlich selbsterklärend und das "immer" bedeutet nur, dass es gleich nach Fertigstellung des Codes vom Staat dorthin geht. Der "Eintrag /" bedeutet, dass der Code direkt nach Eintritt in den Zustand ausgeführt werden soll.
Die IDE kompiliert die Zustandsmaschine nach C++, das Arduino-kompatibel ist. Um die Funktionen des Otto zu nutzen, müssen wir selbst ein wenig Arbeit auf die Benutzeroberfläche nehmen.
Die folgenden Schlüsselwörter können verwendet werden, um Dinge zu definieren, die der Zustandsautomat verwenden soll:
Konstanten, die Werte halten und nicht geändert werden können
Variablen, die Werte halten und geändert werden können
Operationen, die zu virtuellen C++-Methoden zur Implementierung generiert werden
Schnittstelle:
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 mund_heart: integer = 13 const mund_happyOpen: integer = 11 operation zowi_init(YL: integer, YR: 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()
Profi-Tipp: Wenn Sie an einer Stelle nicht wissen, was Sie eingeben sollen oder ein Fehler aufgetreten ist, drücken Sie "Strg + Leertaste", um einige Hinweise zu erhalten, was Sie eingeben können.
Außerdem sollten Sie sich die Beispiele ansehen, sie enthalten auch etwas Code! Sie können sie auch als Struktur verwenden, um nur das Modell zu bearbeiten, was derzeit der einzige Teil ist, der uns interessiert.
Schritt 3: Füllen der Lücken
Nachdem Sie Dinge im Modell geändert haben, können Sie mit der rechten Maustaste auf "zowiSCT.sgen -> Generate Code Artifacts" klicken. Dadurch werden die virtuellen Funktionen in C++ generiert, die in der State Machine im Ordner „src-gen“deklariert werden, die wir dann mit normalem C++ implementieren.
Erstellen Sie einfach diese beiden Dateien im Ordner "src", um die gewünschte Funktionalität von Otto zu erhalten.
Zuerst die 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 Mundtyp); void zowi_sing(sc_integer songName); void zowi_walk(sc_real steps, sc_integer T, sc_integer dir); void zowi_shakeLeg(); }; #endif /* SRC_IMPL_H_ */
Dann die Impl.cpp
#include "Impl.h"
#include "../Zowi/Zowi.h" Zowi zowi = new 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); aufrechtzuerhalten. Void Impl::zowi_putMouth (sc_integer MouthType) { zowi.putMouth (mouthType); aufrechtzuerhalten. 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); aufrechtzuerhalten. Void Impl::zowi_shakeLeg() {zowi.shakeLeg(); }
Schritt 4: Den Otto-Tanz machen
Wenn Sie mit Ihrem Produkt zufrieden sind, klicken Sie oben links auf den Hammer und warten Sie, bis der Vorgang abgeschlossen ist. Dann klicke auf den grünen Pfeil rechts neben dem Hammer und sieh deinen Otto tanzen!
Wenn Sie möchten, können Sie sich einige andere Beispiele ansehen: YAKINDU Statechart Tools
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: 7 Schritte (mit Bildern)
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: Update: 7. April 2019 - Rev 3 von lp_BLE_TempHumidity, fügt Datums- / Zeitdiagramme mit pfodApp V3.0.362+ hinzu und automatische Drosselung beim Senden von DatenUpdate: 24. März 2019 – Rev 2 von lp_BLE_TempHumidity, fügt weitere Plotoptionen hinzu und i2c_ClearBus, fügt GT832E