AnalogJOY

Aus
Version vom 16. Oktober 2020, 17:54 Uhr von Tw (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Analog Joystick


USB Game Pad Interface

Joysticks sind praktische Controller für bestimmte Art von Computer Spiele. Atari hat da einen Standard gesetzt für digitale Joysticks. Einige alte Retro Computer arbeiten jedoch mit analogen Joysticks.

Digitale Joysticks arbeiten mit Schalter für die vier Richtungen (oben, unten, links und rechts). Damit kann man 8 Richtungen vorgeben. Die diagonalen werden durch gleichzeitige Betätigung von zwei Schalter realisiert. Bauart bedingt funktionieren hier nur bestimmte Kombinationen: oben/rechts, unten rechts, unten/links und oben/links

Analoge Joysticks verwenden Potentiometer statt Schalter. Ein Poti für die X Richtung (horizontale Achse, links/rechts) und eines für Y (vertiakle Achse, oben/unten). Damit ist es möglich auch die Intensität der Joystick Bewegung zu ermitteln. Leider hat sich hier keine Norm entwickelt, wodurch jedes Gerät unterschiedliche Joystick Ports verwendet. Die Joysticks sind daher nicht so einfach untereinander austauschbar.

Analoge Joysticks sind heutzutage schwierig zu bekommen. Sie werden nicht mehr hergestellt. Durch die begrenzte Lebensdauer werden sie nur noch selten angeboten, und sehr oft funktionieren diese gebrauchten Joysticks nicht mehr besonders gut.

Andererseits gibt es unzählige USB Joysticks und USB Gamepads am Markt. Moderne Gamepads haben neben dem digitalen Richtungskreuz (D-PAD) meistens noch zwei analoge Sticks. Diese Geräte sind sehr preisgünstig und überall erhältlich. Da liegt es nahe, dass man die alten analogen Joysticks ersetzt durch USB Geräte. Dazu braucht man aber ein Interface, da die alten Retro Computer natürlich keinen USB Port haben.


Umsetzung

Das Ziel ist es, eine breite Palette von USB Controller (Joysticks, Gamepads) anstelle eines analogen Joysticks verwenden zu können.

Die Basis Hardware ist ein Controller auf Arduino Basis, weil diese kostengünstig und leicht erhältlich sind. Die Wahl fällt auf einen Arduino UNO (oder einem billigen Clone). Für den Anschluss des USB Controller benützen wir ein USB Host Shield. Zuletzt braucht es noch ein sogenanntes Prototype Shield für den Anschluss des analogen Joystickport.

  • Arduino UNO R3 (oder Clone)
  • USB Host Shield v2.0
  • Prototype Shield
  • digitales Potentiometer
  • Stecker für den Joystick Port

Als digitales Potentiometer kann eines unten aufgeführten IC (siehe Abschnitt 'Digitale Potentiometer') verwendet werden. Es braucht zwei digitale Potentiometer, eines für die X- und eines für die Y-Richtung. Es gibt IC Typen die bereits zwei Potentiometer unterstützen und andere die nur ein digitales Potentiometer haben (in diesem Fall benötigt man zwei IC). Anbei sind Schaltbilder für jeden der IC Typen.

Die Stecker für den analogen Joystick Port sind teilweise schwer zu bekommen. Man kann aber auch einfach das Kabel eines alten Joystick abschneiden und direkt anlöten. Im Abschnitt 'Analog Joysticks' findet man Informationen über die gängigen Port Stecker.

Zuletzt muss noch der Arduino Sketch angepasst werden auf den verwendeten Typ des digitalen Potentiometer. Falls der USB Controller nicht richtig funktioniert, muss man ggf. noch Anpassungen machen für den verwendeten Typ. Es sind aber einige gängige Controller bereits implementiert (siehe Abschnitt 'USB Gamepads und Joystick').


Funktionstest

Nachdem man alles richtig verdrahtet hat sollte man einen Funktionstest machen, bevor man es am Retro Computer anschließt:

  • USB Controller anschließen und Reset drücken, im serial Monitor sieht man jede Aktion des Controller
  • die digitalen Events (Taster, Feuerknöpfe, Aktionstasten) werden auf digitalen Ausgänge gespiegelt -- Multimeter (0V, 5V)
  • die analogen Werte der Sticks (X und Y) werden auf den beiden digitalen Potentiometer ausgegeben -- Multimeter (0 bis 100K Ohm)
  • die Verkabelung zum Joystickport kann man per Ohmmeter kontrollieren


Digitale USB Joysticks und Gamepads werden unterstützt, aber das macht natürlich nicht bei jedem Spiel auch wirklich Sinn. Einige Spiele benötigen einen analogen Controller, aber viele Spiele brauchen nur eine digitale Richtungsinformation.

Die USB Gamepads haben meistens ein digitales Richtungskreuz (D-PAD) und analoge Sticks. Es werden beide Mechanismen umgesetzt, man kann also wahlweise das digitale Steuerkreuz oder den ersten analog Stick verwenden.


Viel Spaß beim zocken ...


Dokumentation


Analog Joysticks

Analoge Joysticks werden bei verschiedenen Retro Computer verwendet. ZB. beim Tandy Color Computer, beim Dragon Computer und bei allen Retro PC mit dem klassischen 15 poligen Gameport. Leider hat sich hier nie ein Standard durchgesetzt, jeder dieser Geräte verwendet einen andere Stecker Norm für ihre Joystick Ports.


Joystick Ports

Die analogen Joystick Ports haben jeweils ganz eigene Stecker die nicht oder nur beschränkt zueinander kompatibel sind. Digitale Joysticks haben Dank Atari einen Norm Stecker. Aber im Detail unterscheiden sie sich dann doch etwas.


Joysticks am Tandy Color Computer

Tandy verwendet beim Joystick Port 6 polige DIN Stecker. Es werden zwei analoge Werte (X und Y Achse) sowie zwei Aktionsknöpfe unterstützt.



Joysticks am Dragon 32/64

Die Dragon 32/64 Familie verwendet beim Joystick Port 5 polige DIN Stecker. Allerdings sind das nicht dieselben DIN Stecker wie man es von alten Aufnahmegeräten kennt. Es sind ganz spezielle 5 polige DIN Stecker, wo die Stifte in einem Winkel von 240 Grad angeordnet sind ('240 degree, 5 pin DIN plug'). Es werden zwei analoge Werte (X und Y Achse) sowie EIN Aktionsknopf unterstützt.

Weil der sechste Pin fehlt, kann man keine Tandy Joysticks am Dragon verwenden. Aber man kann Dragon Joysticks am Tandy Color Computer betreiben. Allerdings nur eingeschränkt, weil der zweite Aktionsknopf fehlt. Spiele die zwei Knöpfe brauchen, können deshalb mit Dragon Joysticks nicht gespielt werden.



Joysticks am Retro PC

Joysticks für den alten PC Gameport haben einen 15 poligen SUB-D Stecker.

Analoge Joystick werden seit Jahren nicht mehr produziert und sind deshalb schwer zu bekommen. Am einfachsten bekommt man heute noch Joystick mit PC Gameport Stecker. Man kann sich daraus sehr einfach einen Joystick für den Tandy CoCo oder den Dragon basteln. Dazu schneidet man den 15 poigen Gameport Stecker ab und lötet einen passenden DIN Stecker an. Alternativ dazu kann man sich auch Adapter Kabel bauen.


Umbau PC Joystick für Tandy CoCo

Der alte PC Gameport unterstützt analoge Joysticks. Diese Technik ist veraltet, und doch werden am Markt diese analogen PC Joysticks noch am häufigsten angeboten. Man kann diese analogen Joystick sogar noch neuwertig erwerben (aus Altbeständen). Daher ist die Versuchung groß, so einen neuwertigen PC Joystick umzubauen für einen Dragon oder für einen Tandy Computer.

Zunächst ist der 15 polige Gameport Stecker natürlich inkompatibel. Der wird abgeschnitten und durch einen passenden DIN Stecker ersetzt. Das abgeschnittene Ende kann helfen, die Funktion der einzelnen Drähte zu analysieren. Die Pinbelegung des PC Gameport ist bekannt, mit einem Ohmmeter findet man heraus welche Farbe zu welchem Pin geht. Dann kann man ganz einfach zuordnen, welche Farbe an welchem Pin des DIN Stecker angelötet werden muss.

Das habe ich durchgeführt für den 6 poligen DIN Stecker des Tandy Color Computer. Das Programm DIAG.BIN testet unter anderem die Funktion der beiden Joystick Ports. Der PC Joystick funktioniert leider nicht so einfach am Tandy und auch nicht am Dragon. Das Ohmmeter zeigt im 1MOhm Bereich einen variablen Widerstand von Plus 5V und jeweils X-Achse und Y-Achse. Der Widerstand zum Masse Pin ist unendlich. Ein Blick ins Schaltbild eines Tandy Joystick zeigt aber, dass das Potentiometer an Plus und Masse angeschlossen ist, und so einen Spannungsteiler bildet.

Der PC Joystick wird zerlegt und tatsächlich sind beide Potentiometer nur an plus 5V angeschlossen. Zwei Drähte beheben das Problem. Der Joystick funktioniert nun tadellos sowohl am Tandy als auch am Dragon.



Vielen Dank an die Betreiber der Web Seiten von nerdlypleasures und Andreas Pernau, die Infos haben mich zu diesem Umbau inspiriert und zur Lösung beigetragen.


USB Gamepads und Joystick

Folgende USB Joysticks und USB Gamepads funktionieren:

  • USB Joysticks: Competition Pro SL-6602
  • USB Gamepad: 8BitDo SN30 PRO USB
  • USB Gamepad: 8BitDo SN30 PRO
  • USB Gamepad: 8BitDo SF30 PRO
  • USB Gamepad: 8Bitdo F30 pro
  • USB Gamepad: G-LAB K-PAD THORIUM-Gaming-Controller
  • USB Gamepad: EAXUS EasySMX PC wired Gamepad
  • USB Gamepad: LAELR SNES USB-Controller
  • USB Gamepad: WADEO NES Controller



Digitale Potentiometer

Folgende digitale Potentiometer sind implementiert:

  • X9C104
  • DS1803-100
  • DS1804-100


Folgende digitale Potentiometer stellen funktionierende Alternativen dar (zZ. nicht implementiert):

  • MCP415x
  • DS1267


Datenblätter


Links