Forum: Mikrocontroller und Digitale Elektronik Joystick signale auswerten


von V.Vitusen@hotmail.de (Gast)


Lesenswert?

Hallo zusammen,
ich möchte gerne ein Joystick was durch ein USB shield mit einer Atmega 
2560 verbunden ist auswerten. Nun ist die frage wie werte ich es aus 
bzw. auf welchen Pin von Atmega 2560 bekomme ich die Signale von dem USB 
shield.

von 50c (Gast)


Lesenswert?

V.Vitusen@hotmail.de schrieb:
> Nun ist die frage wie werte ich es aus
> bzw. auf welchen Pin von Atmega 2560 bekomme ich die Signale von dem USB
> shield.

...schaue in den Schaltplan/Doku (S.42) deines (unbekannten) Shield...

von Jim M. (turboj)


Lesenswert?

Redesign!

USB Host ist Scheisse zu Programmieren - man will da ein Linux unten 
drunter haben.

Die HID Spec für u.a. Maus, Tastatur und Joystick ist überraschend 
kompliziert.

Ein USB Host Shield ohne Schaltplan oder Beispielcode ist schlecht 
benutzbar.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jim M. schrieb:
> Ein USB Host Shield
Das nimmst du jetzt aber auch nur an, oder?

V.Vitusen@hotmail.de schrieb:
> von dem USB shield.
Das siehst du sicher leicht, wenn du den Schaltplan "von dem USB shield" 
anschaust.

Irgendwie arg trollig, das hier...

von DPA (Gast)


Lesenswert?

Bei so einem Joystick, kann man da nicht einfach einen USB->PS2 Adapter 
nehmen, und dann das ding über PS2 ansteuern? Btw, eventuell könnte man 
den Adapter ja sogar weglassen, und mit dem USB direkt PS2 reden, das 
ist ja in der regel eh direkt verbunden?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

An dieser Stelle sollte man sich mal grundlegend Gedanken um das Wort 
"USB-Host" machen. So einen braucht man nämlich, um ein "USB-Device" 
anzuschließen.

: Bearbeitet durch Moderator
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

DPA schrieb:
> Bei so einem Joystick, kann man da nicht einfach einen USB->PS2 Adapter
> nehmen, und dann das ding über PS2 ansteuern?

Natürlich nicht.

So ein "USB->PS/2-Adapter" ist passiv und enthält keine Elektronik. Er 
funktioniert nur an "bilingualen" Geräten, d.h. Mäusen und Tastaturen, 
die vom Hersteller dafür vorgesehen sind, sowohl USB- als auch 
PS/2-Signale zu erzeugen. Der Adapter schaltet nur die Betriebsart um.

Dazu kommt noch, daß es keine PS/2-Joysticks gibt.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Rufus Τ. F. schrieb:
> Dazu kommt noch, daß es keine PS/2-Joysticks gibt.

Genau. Früher(tm) wurden analoge PC-Joysticks üblicherweise per 
D-Sub-15-Stecker in die Soundkarte angeschlossen.

https://de.wikipedia.org/wiki/Gameport

Bei den meisten anderen Computern wurden überwiegend Joysticks 
eingesetzt, die einfach nur aus eine Handvoll Tastern bestanden. Es gab 
einen da den Atari-Pseudostandard, der auch von Commodore und Co. 
verwendet wurden, d.h. auf Basis von D-Sub-9-Steckverbindern. Diese 
waren natürlich nicht als EIA232 beschaltet, sondern es wurden einfach 
die Kontakte herausgeführt.

https://de.wikipedia.org/wiki/Competition_Pro

von V.Vitusen@hotmail.de (Gast)


Lesenswert?


von Thomas W. (diddl)


Lesenswert?

Ach du willst einen USB Stick anschließen?


Da musst du einen kompletten USB Host Stack aufbauen und die 
Descriptoren richtig setzen, dass ein Joy device erkannt wird.


Viel Spaß.

von V.Vitusen@hotmail.de (Gast)


Lesenswert?

ich möchte ein ARduino was mit 2 Motorren verbunden ist mit einem USB 
Joystick steuern. Und das ganze soll über MAtlab Simulink laufen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

V.Vitusen@hotmail.de schrieb:
> Nun habe ich im Datenblatt von MAX3421E nachgeschaut und leider nix
> gefunde.

Das ist ein USB-Host. Du musst also "nur" einen USB-Host-Stack auf 
Deinem Arduino implementieren und dann darauf aufsetzend die 
Kommunikation mit einem HID hinbekommen (das ist die von Joysticks, 
Mäusen und Tastaturen verwendete USB-Geräteklasse).

Einfacher:

Vergiss' den USB-Joystick. Einfache analoge Joysticks, die man mit sehr 
wenig Aufwand mit einem Arduino auswerten kann, gibt es für wenig Geld, 
entweder als Bauteile, auf "Breakout Boards" oder als Gebrauchtware von 
Leuten, die schon in der vor-USB-Zeit mit Joysticks gespielt haben.

von V.Vitusen@hotmail.de (Gast)


Lesenswert?

mi dem analogen Joystick habe ich schon hinbekommen. Nun möchte ich es 
durch ein USB Joystick ersetzen. Aber ich versuch es mal wie du oben 
beschrieben hast.
Vielen dank

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Da musst du einen kompletten USB Host Stack aufbauen und die
> Descriptoren richtig setzen, dass ein Joy device erkannt wird.

Falsch. Die Deskriptoren müssen auf dem Gerät gesetzt werden und nicht 
auf dem Host. Der Host muss die Deskriptoren aus dem Gerät auslesen und 
dementsprechend Treiber laden, Geräteklassen initialisieren, usw..

Bei dem Projekt des TE würde ich jedoch den Aufwand auf Host-Seite 
minimieren, d.h. maximal den Device Descriptor abfragen und einen sehr 
flüchtigen Blick darauf werfen, um zu erkennen, dass ein Gerät 
angeschlossen und initialisiert ist. Der Rest, insbesondere die 
Kanalbelegung im HID-Joystick-Modell, kann in die Firmware fest 
hineinkodiert sein und muss nur angepasst werden, wenn ein anderer 
Joysticktyp eingesetzt wird. Das erstmalige Auslesen aller Deskriptoren 
und der Kanalkonfiguration kann lieber gemütlich auf einem PC mit den 
entsprechenden USB-Analyseprogrammen erfolgen.

Ein vollständiger USB-Host-Stack wäre natürlich um etliche 
Größenordnungen komplexer, insbesondere wenn er auch noch das 
Powermanagement betreiben und USB-Hubs initialisieren und überwachen 
muss. Aber das kann man bei einer Verbindung genau eines USB-Geräts 
direkt am USB-Host (bzw. dessen integriertem Root-Hub) einsparen.

: Bearbeitet durch User
von Thomas W. (diddl)


Lesenswert?


von V.Vitusen@hotmail.de (Gast)


Lesenswert?

HAllo Thomas,
jedoch muss ich das ganze in MAtlab simulink steuern

von Sven K. (quotschmacher)


Lesenswert?

mein erster gedanke war gerade: sollte dir da nicht ros entgegenkommen?
https://www.ros.org/
da kannst du deinen usb-joystick auch ganz bequem am pc betreiben und 
die matlab auswertung machen, zusätzlich kannst du den arduino mit daten 
versorgen, wie er die motoren steuern soll. ist vielleicht eine twas 
übertriebene lösung, aber du hast deine matlab-anbindung und deinen 
usb-joystick.

von V.Vitusen@hotmail.de (Gast)


Lesenswert?

Auch ne gute idee.
Ich möchte zuerst aber dazu bringen das mein USB host signale auf mein 
Arduino überträgt. Sozusagen das  die Signal vom USB(Joystick) ankommen. 
Hat jmd ein Idee. HAbe mitbekommen das ich dazu erstmal ein Treiber 
installieren muss. ABer ganz verstanden habe ich leider nicht

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

V.Vitusen@hotmail.de schrieb:
> Ich möchte zuerst aber dazu bringen das mein USB host signale auf mein
> Arduino überträgt.

Was hat das mit

V.Vitusen@hotmail.de schrieb:
> jedoch muss ich das ganze in MAtlab simulink steuern

zu tun?

von V.Vitusen@hotmail.de (Gast)


Lesenswert?

Also ich möchte zu erst herrausfinden was mein Joystick für Signale 
ausgibt. Bzw. wenn ich mein Joystick nach vorne Bewege was für ein 
Signal und wo es ausgibt. Vllt lieg ich komplett flasch bin ein Anfänger 
:)

von Sven K. (quotschmacher)


Lesenswert?

wenn du ein linux nutzt: https://linux.die.net/man/1/jstest

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.