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.
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...
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.
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...
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?
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.
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.
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
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ß.
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.
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
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.
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.
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
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
:)
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.