Fernsteuerung

Dies ein Artikel der Animatronic WorkBench Dokumentation

Die Animatronic Workbench (AWB) bietet die Möglichkeit, animatronische Figuren über WLAN zu steuern. Die entsprechenden HTTP-API Aufrufe sind in der API Dokumentation beschrieben.

Die Fernsteuerung kann daher z.B. auf einem PC oder Mobiltelefon direkt über einen Webbrowser erfolgen, indem die entsprechenden API Aufrufe an den AWB-Client gesendet werden.

Man kann aber zu Beispiel auch eine Fernsteuerung aus einem ESP32 Mikrocontroller und einem Joystick oder Tastenfeld bauen.

Beispiel

In diesem Beispiel wird die Fernsteuerung des Animatronic Grogu über einen M5Stack M5StickC PLUS2 mit Mini JoyC HAT gezeigt.

Der Code reagiert auf die Joystick-Bewegungen und Tastenanschläge, um verschiedene Timelines abzuspielen.

Beim Export des Projekts wird das entsprechende ESP32 Projekt automatisch im Ordner Esp32Clients/awb_esp32_remote-M5Stick-Mini-JoyC-HAT des AWB-Projekts angelegt.

Anpassungen können in der Datei CustomCode.cpp vorgenommen werden, die sich im Ordner src des Projekts befindet. Das funktioniert genauso wie für den AWB Client und ist in der Custom Code Dokumentation beschrieben.

Im Beispiel wird der Code in der Datei CustomCode.cpp wie folgt aussehen:


#include <Arduino.h>
#include "CustomCode.h"
#include <Hardware.h>
/*
    Enter your custom code in this cpp file and the corresponding header file.
    Only write code beween the cc-start and cc-end comments, otherwise it will be overwritten and lost.
*/
void CustomCode::setup()
{
    /* cc-start-setup - insert your setup code here before the end-setup comment: */
    /* cc-end-setup  */
}
void CustomCode::loop(int8_t joyPosX, int8_t joyPosY, bool joyButton, bool button2, bool button3)
{
    /* cc-start-loop - insert your loop code here before the end-loop comment: */
    if (joyPosY > 50)
        this->_commandSender->playTimeline("YES");
    if (joyPosY < -50)
        this->_commandSender->playTimeline("NO");
    if (joyPosX > 50)
        this->_commandSender->playTimeline("LookUpRight");
    if (joyPosX < -50)
        this->_commandSender->playTimeline("LookUpMiddle");Q
    if (joyButton == true)
        this->_commandSender->playTimeline("Wink");
    if (button2 == true)
        this->_commandSender->playTimeline("The+Force+raw");
    if (button3 == true)
    {
        bool ok = this->_commandSender->playTimeline("Dance");
        if (ok == true)
            _display.pause(40, "Dancing lock");
    }
    /* cc-end-loop  */
}
/* cc-start-functions - insert your functions here before the end-functions comment: */
/* cc-end-functions  */

In diesem Beispiel wird z.B. die Timeline "YES" abgespielt, wenn der Joystick nach oben bewegt wird, und die Timeline "NO", wenn er nach unten bewegt wird.

Die Timelines "LookUpRight" und "LookUpMiddle" werden abgespielt, wenn der Joystick nach rechts bzw. links bewegt wird.

Wenn der Joystick-Knopf gedrückt wird, wird die Timeline "Wink" abgespielt. Die Tasten 2 und 3 lösen ebenfalls bestimmte Timelines aus.

Bei der Timeline "Dance" handelt es sich um eine Bühnenperformance. Daher wird eine Pause von 40 Sekunden eingelegt, um zu verhindern, dass in dieser Zeit aus Versehen andere Timelines gesendet werden und die "Dance" Timeline abbricht.

QR-Code dieses Beitrags


Verwandte Beiträge

Dieser Blog-Artikel beinhaltet keine bezahlten Produktplatzierungen.
Bei Affiliate-Links oder Rabatt-Codes entstehen für den Leser keine Kosten oder Nachteile. Bei einem Kauf über diesen Link/mit diesem Code erhält der Betreiber eine prozentuale Provision und/oder gewährt dem Käufer einen Rabatt in angegebener Höhe. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen