Seite 1 von 1

fischertechnik RoboTXdroid

Verfasst: 29 Apr 2013, 17:18
von tobiasbrezing
Hallo,

um den Mitgliedern der Community und anderen Nutzern die Entwicklung eigener Apps zu ermöglichen, haben wir das Projekt RoboTXdroid (im konkreten handelt es sich um die Sourcen für die App+API) auf Git / Github hochladen lassen.

https://github.com/bloeff/RoboTXdroidBluetooth-API

Grüße
Tobias

Re: fischertechnik RoboTXdroid

Verfasst: 04 Mai 2013, 12:09
von x coaster
Hallo,

find ich gut.

Ist die ApiEntry.java Datei für die Motorenansteuerung zuständig? Ich würde nämlich die Motorenansteuerung mal gerne ändern, um die App auf das jeweilige Fahrzeug anzupassen. ;)

LG
Jonas

Re: fischertechnik RoboTXdroid

Verfasst: 07 Mai 2013, 17:35
von TobiasHahn
Hallo Jonas,

die Datei ApiEntry.java bieten die direkte Schnittstelle zum Robo TX Controller. Hier kannst du beispielsweise die Methode doMovement aufrufen und hier Geschwindigkeiten für M1 und M2 übergeben positiv für vorwärts und negativ für Rückwerts. Wenn du Motoren bzw. Ausgänge einzeln ansteuern willst kannst du dies über die Methoden SetOutMotorValues bzw. SetOutMotorValues machen.

Ein Aufruf könnte dann wie folgt aussehen:

// Steuert die Motoren M1 und M2
ApiEntry.getInstance().doMovement(left, right);

// Schaltet die Ausgänge O7 und O8 an
ApiEntry.getInstance().SetOutPwmValues(6, (short)512);
ApiEntry.getInstance().SetOutPwmValues(7, (short)512);
Diese befinden sich in der Datei AnimationView.java

Der Aufruf für die Gabel bzw. Hoch und Runter befindet sich in der Datei ControllerActivity.java und sieht wie folgt aus:

// Prüft ob Button gedrückt oder losgelassen
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Setzt Ausgang wenn Button gedrückt
int upVal = ApiEntry.getInstance().GetInIOValue(4);
if (upVal == 0)
ApiEntry.getInstance().SetOutPwmValues(4, (short) 512);
else
ApiEntry.getInstance().SetOutPwmValues(4, (short) 0);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
// Setzt wert auf 0
ApiEntry.getInstance().SetOutPwmValues(4, (short) 0);
}


Wenn du die doMovement aus der ApiEntry.java verwenden möchtest jedoch eine andere Motorkonfiguration hast kannst du dies über die Indizes der TransferArea erledigen.

Beispiel:

// Hier werden direkt werte in die TransferArea übernommen
getTransferArea().ftX1out.duty[0] = (short) (right);
getTransferArea().ftX1out.duty[1] = 0;

Solltest du den Motor an einem anderen Ausgang haben kannst du das über den Array Index steuern

getTransferArea().ftX1out.duty[x] = (short) (right);
getTransferArea().ftX1out.duty[x+1] = 0;

Du musst jedoch beachten, dass ein Motor sich IMMER nur in eine Richtung drehen kann. Deshalb darf immer nur ein Ausgang mit einem Wert belegt werden.

Ich hoffe ich konnte dir etwas weiterhelfen.

Grüße,
Tobias Hahn

Re: fischertechnik RoboTXdroid

Verfasst: 09 Mai 2013, 09:00
von x coaster
Hallo,

danke für die sehr ausführliche Antwort. :mrgreen:

Ich werde es mal ausprobieren. Ein paar Befehle z.B. if kenn ich ja schon von PHP.

Beste Grüße
Jonas

Re: fischertechnik RoboTXdroid

Verfasst: 13 Mai 2013, 07:53
von Dirk Haizmann ft
.. und wieder konnte geholfen werden.

ft