Code
codeArduino
/* * ============================================================* MobBob-Steuerungsprogramm - Software Serielle Bluetooth-Version * von Kevin Chan (alias Cevinius) * ============================================================* * Dieses Programm ermöglicht die Steuerung von MobBob mit seriellen Befehlen. In dieser Version des Codes werden die *-Befehle über einen seriellen Software-Port empfangen, wobei die Pins in #define oben definiert sind. * Dies bedeutet, dass Sie ein beliebiges Arduino-kompatibles Board verwenden und eine Bluetooth-Karte in die Pins für die * Software-Seriell einstecken können. (Im Gegensatz zu der anderen Version, die für das Bluno-Board von DFRobot entwickelt wurde.) * * Dieses Programm ist lang und enthält 2 Hauptkomponenten - ein reibungsloses Servo-Animationsprogramm und ein * serielles Befehls-Parser-Programm. * * Animationssystem * ================* Das Animationsprogramm wurde entwickelt, um Servo-Keyframe-Arrays reibungslos zu animieren. Der Code versucht sein * Bestes zu tun, um einfach zu verwenden. * * Das Animationssystem wird nur 1 Befehl in die Warteschlange stellen. d.h. ein Befehl kann ausgeführt werden, * und ein Befehl kann in die Warteschlange gestellt werden. Wenn Sie weitere Befehle senden, überschreiben diese den Befehl in der Warteschlange. * * Das Animationssystem wartet standardmäßig, bis die aktuelle Animation beendet ist, bevor die nächste gestartet wird. Dies * bedeutet, dass, wenn die Animationsdaten mit dem Roboter in seiner Grundpose enden, die Dinge reibungslos zusammenlaufen. Um dies * zu unterstützen, verfügt das Animationssystem auch über eine Funktion, bei der eine Animation eine "Endsequenz" * haben kann, um den Roboter wieder in die Grundpose zu bringen. Diese Funktion wird für die Vorwärts-/Rückwärts-Animationen verwendet. * Diese Animationen haben eine letzte Sequenz, die den Roboter wieder in die Grundpose bringt. * * Wenn die Wiedergabe einer Animation beendet ist, gibt das Animationssystem eine Antwortzeichenfolge an den seriellen Port aus. * Dadurch können die Anrufer wissen, wann die von ihnen angeforderten Animationen abgespielt wurden. Dies ist nützlich * für Benutzer, um Animationen zu sequenzieren - sie warten darauf, dass eine fertig ist, bevor sie eine andere starten. * * Der Animationscode hat viele Variablen, um Dinge zu optimieren. Z.B. Aktualisierungsfrequenz, Arduino-Pins usw. * * Das Animationsdaten-Array-Format ist auch so konzipiert, dass es einfach von Hand bearbeitet werden kann. * * Befehls-Parser * ==============* Dieses System parst seriell empfangene Befehle und verarbeitet sie. Die Befehle umfassen einen zum direkten * Setzen von Servopositionen, sowie Befehle zum Auslösen vordefinierter Animationen und Walks. * * Benutzer, die sich nicht um die Details des Gehens kümmern möchten, können einfach die vordefinierten Spaziergänge/Animationen verwenden. * Und Benutzer, die die vollständige Kontrolle über die Servos wünschen (um neue Animationen im Handumdrehen zu erstellen), können dies auch tun. * * Wie oben erwähnt, können diese Befehle interaktiv über den Arduino Serial Monitor verwendet werden. Sie können auch * über Bluetooth LE (bei Verwendung eines Bluno) eingesandt werden. Die Telefon-App sendet die Befehle über Bluetooth LE an den * Bluno. * * Allgemeine Befehle:* ----------------- * Bereit/OK-Prüfung: * Statusprüfung. Die Antwort wird sofort zurückgegeben, um zu überprüfen, ob der Controller funktioniert. * * Servo einstellen: * Zeit - Zeit zum Tween zu bestimmten Winkeln, 0 springt sofort zu Winkeln * leftHip - Mikrosekunden von der Mitte. -ve ist angesagt, +ve ist angesagt * leftFoot - Mikrosekunden von flach. -ve ist Fuß nach unten, +ve ist Fuß nach oben * rechte Hüfte - Mikrosekunden von der Mitte. -ve ist angesagt, +ve ist angesagt * rightFoot - Mikrosekunden von flach. -ve ist Fuß unten, +ve ist Fuß oben * Dieser Befehl wird verwendet, um die volle Kontrolle über die Servos zu erhalten. Sie können den Roboter über die angegebene Dauer von seiner * aktuellen Pose in die angegebene Pose tweenen. * * Stop/Reset: * Stoppt den Roboter nach der aktuellen Animation. Kann verwendet werden, um Animationen, die auf Loop * gesetzt sind, auf unbestimmte Zeit zu stoppen. Dies kann auch verwendet werden, um den Roboter in seine Grundpose (aufrecht stehend) zu versetzen * * Sofort stoppen: * Stoppt den Roboter sofort, ohne zu warten, bis die aktuelle Animation abgeschlossen ist. Dieser * unterbricht die aktuelle Animation des Roboters. Möglicherweise befindet sich der Roboter mitten in der Animation * und in einer instabilen Pose. Seien Sie also vorsichtig, wenn Sie dies verwenden. * * Standard-Gehbefehle:* ----------------------- * Vorwärts:, -1 bedeutet kontinuierlich, 0 oder kein Parameter ist das gleiche wie 1 mal. * Rückwärts:, -1 bedeutet kontinuierlich, 0 oder kein Parameter ist gleich 1 Mal. * Links abbiegen:, -1 bedeutet kontinuierlich, 0 oder kein Parameter ist gleich 1 Mal. * Rechts abbiegen: