Technische Grundlagen
Der Joystick - das unbekannte Wesen, das vielen Computer-Spielen das gewisse Etwas gibt, wie es etwa das Salz in der Suppe tut. Dass so ein Joystick auch leicht selbst zu bauen ist, wissen wahrscheinlich nur wenige. Dabei ist gerade ein guter, alter (Gameport-)Joystick relativ schnell gebaut. Tja, wenn man nur weiß wie. Der folgende Abschnitt erklärt das bisschen Elektronik, die man beim Joystickbau beherrschen sollte.
Der Gameport
Einen Gameport hat (noch) jeder nicht ganz mit Spielern auf Kriegsfuß stehende Desktop-PC. Auch viele Notebooks besitzen diesen Port. Leider wird er aber zunehmend von USB verdrängt. Auch die Tatsache, dass viele Mainboards bereits alles mögliche integrieren und daher Platzmangel bei den Steckverbindungen haben, drängt den Gameport immer weiter zurück. Sollte jedoch einmal ein Gameport fehlen, so gibt es 3 Möglichkeiten:
- Einen USB-auf-Gameport-Adapter kaufen (weniger anspruchsvoll) oder selbst konstruieren (sehr anspruchsvoll!)
- Aus einem vorhanden USB-Joystick die Steuerelektronik verwenden (weniger empfehlenswert, funktioniert aber durchaus auch)
- Den Joystick für USB entwickeln (sehr anspruchsvoll!)
Da wie gerade eben erwähnt der USB-Bus für den Entwickler bzw. Hobby-Bastler ein sehr anspruchsvolles Unterfangen ist, einigen wir uns darauf, dass der Computer einen Gameport besitzt, entweder direkt auf der Soundkarte oder sonst via USB-Gameport-Adapter (erhältlich z.B. bei CONRAD)
Der weibliche (female) Anschluss des Gameports am Computer
Der männliche (male) Anschluss am Joystick
Pin | Funktion | Pin | Funktion | Pin | Funktion |
---|---|---|---|---|---|
1 | +5 VDC | 6 | Joystick 1 - Y | 11 | Joystick 2 - X |
2 | Button 1 | 7 | Button 2 | 12 | Masse |
3 | Joystick 1 - X | 8 | +5 VDC | 13 | Joystick 2 - Y |
4 | Masse | 9 | +5 VDC | 14 | Button 3 |
5 | Masse | 10 | Button 4 | 15 | +5 VDC |
Jeder dieser 15 Kontakte hat eine spezielle Bedeutung. Zwar haben manche Kontakte gleiche Aufgaben, das soll uns aber nicht weiter stören.
Wie verbindet man aber jetzt die Pins miteinander?
Folgendes Schaltbild soll Aufklärung geben, indem es die Standardbeschaltung eines 2-Achsen-2-Tasten-Joysticks zeigt:
Will man einen Button ansprechen, so muss man nur den jeweiligen Pin mit Masse verbinden.
Komplizierter wird es dann schon bei den jeweiligen Achsen. Hier wird nicht einfach der jeweilige Pin mit Masse verbunden, sondern es muss ein 100 kOhm Potentiometer zwischen +5V und dem jeweiligen geschalten werden. Je nach dem, welcher Widerstand nun anliegt, erkennt der Computer einen mehr oder weniger starken Ausschlag in eine Richtung (Für besonders Interessierte: Der anliegende Widerstand wird über die Ladungsdauer eines Kondensators über ein Monoflop bestimmt). Ein kleiner Widerstand bedeutet nach links bzw. oben, ein großer Widerstand bedeutet nach rechts bzw. unten.
Wie in der Tabelle weiter oben zu ersehen ist, können am Gameport zwei Joysticks mit je zwei Tasten angeschlossen werden. Da heutzutage jedoch kaum jemand zu zweit an einem Rechner spielt, ist es viel zweckmäßiger, wenn man alle Anschlüsse für einen einzigen Joystick nützt. So kann die Joystick2-y-Achse etwa für eine Schubkontrolle genützt werden und so weiter. Somit erhält man "vom Fleck weg" vier Achsen und vier Tasten, mit denen man seinen Joystick ausstatten kann.
Jetzt weiß man eigentlich schon alles, was man von der elektronischen Seite für einen einfachen Joystick wissen sollte. Man bräuchte den Joystick nur noch anzuschließen und in der Systemsteuerung von Windows aktivieren, zum Beispiel als "2-Achsen-4-Tasten-Joystick". Tja, nur was eben fehlt ist der Joystick. Diesen wollen wir auf den folgenden Seiten zusammenbauen.
Eigentlich wollen wir sogar ein bisschen weiter gehen, indem wir uns ein Lenkrad zusammenbauen, mit dem man dann (empfohlenerweise ;-)) Rennspiele spielen kann...
Kommentare:
Wie viele Pedale könnte ich denn jetzt anschließen...?
Wie viele Pins brauche ich für z. B. das Lenkrad?
Nur z.B. Joystick 1-X oder auch in dem Falle Joystick 1-Y...?
Danke im vorraus
Kann jemand einen funktionierenden USB-Gameport-Konverter empfehlen?
Der einzigste, über den kaum Schlechtes gesagt wird, wäre der hier:
http://www.adaptare-shop.de/Gameport-Aktiver-USB-Gameport-Konverter/a20447678_u526_zce627b87-b78e-4d68-846c-eb5a6f57b1ef/
Bloß gibt es den mitlerweile nirgedswo mehr. :`(
Außerdem hab ich auch irgentwo gelesen, das Win7 x64 keinen Gameport unterstützt.
Blöderweise kann ich auch keine zweite Soundkarte anschließen (Hab einen fertig PC von Medion ;) )
???
Antwort KR: Die ueblichen Gameport-Adapter haben keine Probleme mit 4-Achsen-4-Tasten-Joysticks. Proprietaere Erweiterungen wie etwa beim Microsoft Sidewinder funktionieren in der Regel aber nicht, was aber im Prinzip nicht die Schuld des Adapters ist. Ueber den Gameport-Support von Windows 7 weiß ich leider nichts.
Gruß, Max
Antwort KR: Unter Linux kann man etwa über /dev/ioports auf den Gameport lesend zugreifen. Wie das genau mit Python funktioniert, weiß ich leider nicht.
Wegen dem Konfigurieren -> des haut hin aber er erkennt ihn halt nicht als Angeschloßen.
Es wird also der Controler angezeit aber immer auf dem Status nicht verbunden
(4A - 0T )
mfg
cp
Mein 2ter Vewrsuch hat noch nicht stattgefunden, allerdings sind dabei 100k potis dabei die wie im Plan abgebildet Angeschlossen sind.
Betriebssystem ist XP Prof.
Wegen den +5V -> hmm... müsste ich mal schauen aber das dürfte eigentlich nix machen. Es wird ja nicht ewig viel Leistung verlangt, und ob jetz links 5 oder rechts5 ändert an der tatsache 5 aja nichts oder ?
mfg
cp
Was passiert, wenn du nur einen 2-Achsen Joystick konfigurierst? Ich kann mich erinnern, dass es teilw. auch darauf ankommt, dass die Potentiometer fuer Joystick 1 ein anderes +5V Pin haben als die Potentiometer fuer Joystick 2.
Um welches Betriebssystem handelt es sich?
Lg,
Karli
( erstellt hab ich ihn, aber er wird immer als nicht angeschlossen angezeigt. )
Ich habe die schaltung überprüft und sie stimmt.
Gibt es da noch ein paar kniffe oder sowas ?
( Gameport ist aktiv und läuft mit anderen joysticks problemlos )
mfg
cp
ich würde zu den punkten der Abhilfe für den fehlenden Gameport auch noch hinzufügen (hab ich auch gemacht) sich eine alte Soundkarte mit Gameport einbauen. das waren bei mir nur ein paar Handgriffe und es geht perfekt
treaki
weiß hier auch jemand, wie man nen Joystick mit USB baut?
evtl mit Atmega ...
Gruß Joe
Gruß,
Gereon
Ein Hinweis meinerseits wäre, dass man teilweise die Achs-Poti nicht nur an +5V sondern auch an Masse legen kann. Das Poti arbeitet dann als Spannungsteiler, was den Vorteil hat, dass die vom Rechner gemessene Spannung nicht mehr von dem Verwendeten Widerstand abhängt. Somit kann man auch mit 10k Potis fertiger mini-joystick-Module (Conrad) arbeiten.
Zu den Multitasten-Lösungen:
Also was ich hier so entnehmen konnte stimmt mit meinen Erfahrungen überein.
Ein Diodenarray ist Zeitverschwendung, das geht beim Testen gut, beim Arbeiten nicht. Da ich über den Gameport bei manchen Projekten Sensordaten Aufnehme und oft mit mehr als 4 dieser sorte hantiere, gleichzeitig aber noch die Manuelle Steuerung der Anlage über den GP regeln möchte, greife ich oft auf andere Varianten zurück:
Ein Widerstandsarray an einem der Achseingänge lässt viele Taster zu:
Bei zwei Tastern wird der ausgang mit einem 100k Widerstand nach Masse auf Null-Niveau gehalten. Die Taster werden dann über ein bit-artiges System mit einem Widerstand von +5V nach Eingang verkabelt:
+5V - Taster - Widerstand - Eingang - 100k - Masse
Die Taster werden dann je nach anzahl mit folgenden Widerständen versehen:
2 Taster:
- T1: 75k
- T2: 50k
-> T1+T2: ~31k
Eine Software kann nun zwischen nichts, etwas, mehr und viel unterscheiden.
Eine Schaltfeld-Deaktivierung im Sinne eines Aus-Hebels kann dann sehr schön über eine direkte verbindung nach + Erfolgen. der Pegel am Input ist hier dann ja immer +5V.
Dies ist vllt. ein Ansatz der zu einer sicheren Unterscheidung führt, verlangt aber einiges an Softwareaufwand. Genau wie die variante eines Microcontroller- oder Schieberegisterähnlichen "seriellen" Übertragen der Tastdaten ;)
Wie bereits in meinem letzten Posting erwähnt ist das Problem,
dass man auf gar keinen Fall mehr als einen Knopf gleichzeitig drücken
darf, andernfalls wird das falsch interpretiert. (Nachteil der
Diodenmatrix)
Der Schaltplan ohne die Dioden sollte problemlos
funktionieren, ev. würde ich die 56kOhm-Widerstände durch welche
in der Größenordnung 70-100kOhm ersetzen.
Danke jedenfalls
für die Recherche!
welches nicht für 15 Tasten geht sondern sogar für 63
;)
http://www.meierspage.net/how2s/steuerungen/direct_remote_steuerung/direct_remote_steuerung.php
und somit bin ich auf die idee gekommen dass man so auch den 6Tastenjoystick/Lenkrad bauen könnte, Joystick und Lenker
sind ja Prinzipgleich.
http://img476.imageshack.us/my.php?image=lenkrad6ttransistorengm7.gif
oder ohne Transistoren, müsste es so funktionieren:
http://img250.imageshack.us/img250/8608/lenkrad6tdirektqq0.gif
ich habs noch kein meter getestet, aber wenns bei DR geht gehts auch
bei uns ^^
also es is glasklar nicht die methode
^^
auch wenn ich nicht ganz versteh wie ein 6t joystick funktionieren
soll... laut systemsteuerung geht das...
Naja ich hab erstmal nur ne
"Joystickerweiterung" gebaut, mein nachbar wollt für seinen
2a2t joystick ne schubkontrolle... jetz hatter sogar seitenruder dabei
*G*
Ich persönlich wollte das 15-tastensystem für ne
zusatztastatur in spielen verwenden...
buyscripte in CS, bauaktionen in
WC3 und so.. mal abwarten obs ne lösung gibt
folgendem Grund problematisch: Drückt man beispielsweise die Tasten 1
und 2 gleichzeitig, so würde das als Taste 5 interpretiert werden. Und
in der Hektik eines Rennspieles kann so etwas durchaus auftreten und
würde wohl katastrophale Auswirkungen haben.
Aber ein Versuch ist
das allemal Wert, notfalls ist ein wenig Bastelei und Sucherei von der
Softwareseite her notwendig.
programm emuliert.... dabei wird das binärsystem verwendet:
taste1 =
1
taste2 = 2
taste3 = 4
taste4 = 8
die taste 5 ist somit über
dioden auf den anschluss von taste1 und taste2 zu führen somit kommt
am rehner "3" an, dieser rechnet dann aus der summe die
angeschlagenen taste aus...
wie gesagt, es sei denn dass programm, dss ich
nutzte (DirectInput) hätte daraus die einzelnen befehle
gerechnet
vielleicht könnte man das mal ausprobieren, wenn das
Projekt noch läuft/gepflegt wird
Gruß
@ NightFox:
Schaltung ist in Tip-Tronic-Form nicht weiters schwer,
ein richtiger H-Shifter ist allerdings schon trickreicher. Handbremse ist
auch kein Problem, du musst ja nur einen Knopf emulieren. Und die Pedale am
besten wie in einem richtigen Auto verkehrt herum anordnen, ist bereits
für mein "Redesign" geplant. Sofern du Fragen hast, meld
dich! ;-)
jedoch möchte ich Schaltung, Pedalen und Handbremse unbedingt
dabeihaben um ein richtiges Renn-feeling zu haben :)
zu tun, also bitte ein wenig Geduld!
Ciao, Karli