PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control: Frage zu Steuerung per Joystick



tiller
14.11.2007, 14:12
Hallöchen!

Ich habe vor, meinen Bot über einen USB-Joystick, der am PC hängt zu steuern. Dazu bräuchte ich aber nicht nur die beiden Joystick-Achsen, sondern auch noch ein paar von dessen Buttons. Im Wiki habe ich zum Auslesen der Achsenposition folgenden Code gefunden, der allerdings nicht gerade selbsterklärend ist:

https://www.roboternetz.de/wissen/index.php/Joystick_am_PC_zur_Kontrolle_eines_Roboters



Dim X As Integer
Dim Y As Integer
Dim X1 As Word
Dim X2 As Word
Dim Y1 As Word
Dim Y2 As Word

Do
'Darauf warten dass irgendwas gesendet wird
Input "" , X
Input "" , Y

'Die Variablen umskalieren
X1 = X + 20
X2 = X1 * 40

Y1 = Y + 20
Y2 = Y1 * 40
...
loop


1. Welcher Wertebereich wird da genau in X, Y eingelesen? Und warum brauche ich hier X/Y 1/2? Oder sind diese Variablen nur zu in diesem Programm gewollten Soundausgabe wichtig?
2. Kann ich auch irgendwie den Status der Joystick-Buttons abfragen? Ist das gerätespezifisch oder heißen die bei jedem Stick prinzipiell gleich?
3. Wenn ich mein RN-Board über RSR232 ansteuern will brauche ich den Bootloader? Oder versteh ich da was falsch in dem Artikel? Diese #develop brauche ich doch für die Programmierung mit Bascom nicht oder?

Gruß, Thomas

Willa
16.11.2007, 12:29
Hallo!
Ja, das ist erst mein zwiter artikel, ich bin da noch nicht so gut....
zu 1:
Der werttebereich der eingelesen wird, wird von dir definiert. Du kannst den bereich einstellen. Damit bestimmst du quasi die Auflösung deines Joysticks. Eingestellt wird das im Quellcode deines Windows Programms. Steht übrigens auch im Artikel.

zu 1.1:
Alles was du brauchst ist
do
Input "" , X
Input "" , Y
loop
Die restlichen Rechenoperationen sind nur für die soundausgabe.

zu 2:
Ja, buttons kannst du auch abfragen (auch coolie-hats, schubregler, einfach alles...). Die Buttons heißen immer gleich von Button 0 hoch bis zur anzahl der buttons deines joysticks.
das ist der code für 8 buttons:


Dim buttons As Byte() = state.GetButtons()
Dim button As Integer = 0
For i = 0 To 7
If buttons(i) = 128 Then
label1.Text="Button "+i.ToString()+" was pressed!"
End If
Next


zu 3:
Den Bootloader brauchst du nur um deinen Mikrocontroller über rs232 zu programmieren. Aber wahrscheinlich hast du ja ein ISP Programmierkabel, damit geht das natürlich auch.
Vielleicht verstehst du den ganzen artikel falsch...? Du brauchst SharpDevelop um ein Programm für Windows zu schreiben mit dem du deinen Joystick abfragst und dann die Ergebnisse per RS232 an deinen Microcontroller schickst.
Dein µC kann nicht ohne Hilfe einfach einen USB Joystick abfragen. Das musst du schon mit Windows machen.

Hoffe geholfen zu haben,
Viele Grüße,
William

tiller
17.11.2007, 11:41
Danke für deine Hilfe! Ist es eigentlich auch möglich einen Joystick mit einem COM-Port direkt an die RN-Control anzuschließen? Müsste doch dann eigentlich analog zu der Funktion getatkbd, mit der man eine PC-AT-Tastatur abfragen kann, funktionieren oder? Hat schon jemand Erfahrungen damit? Wäre nämlich eigentlich schöner, den Bot nachher ohne PC steuern zu können...

Willa
17.11.2007, 12:35
Hallo!
Ich glaube da ist es billiger und viel einfacher wenn du dir das passende Joystick Modul bei Robotikhardware kaufst...
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=67&products_id=139

Viele Grüße,
William

tiller
19.11.2007, 11:02
wär 'ne alternative, mal schauen