Forum: Mikrocontroller und Digitale Elektronik analoge Joysticks - USB Gamepads


von Thomas W. (diddl)


Lesenswert?

Sorry wenn ich dumme Fragen stelle, ich bin nur Möchtegern Elektroniker 
mit einem Hang zu Retro Computer. Meine Kompetenz liegt mehr bei der 
Software Entwicklung.

------------------

Die C64 und Ataris haben digitale Joysticks, da ist die Welt sehr 
einfach.

Nun gibt es aber auch alte Computer mit analogen Joysticks
- alte PC mit 15 poligen Gameport
- Dragon 32/64 (64 analog Werte für X und Y) - 5 pol. DIN Stecker
- Tandy Color Computer (64 analog Werte für X und Y) - 5 pol. DIN 
Stecker

Die drei sind untereinander kompatibel, wenn man von den Steckern 
absieht.
Man kann analoge Joysticks untereinander problemlos austauschen.

------------------

So, nun meine Wunschvorstellung:

Ich würde gerne gängige USB Joysticks und USB Gamepads an meine alten 
Computer anhängen (als analog Joystick).

Und ich würde gerne eine mir vertraute Umgebung nutzen: AVR Controller

------------------

Den ersten Teil der Geschichte habe ich gelöst:
- ein Arduino
- ein USB Host Shield
Ich kann alle gängigen USB Controller damit bedienen.


Aber der zweite Teil ist etwas problematisch für mich.
Ich müsste die analogen Werte X und Y (je 6 Bit) ausgeben.
Am liebsten ohne meine (mir) wertvollen Museumsstücke zu schädigen ...

Ich dachte dabei an ein Widerstands Array, so wie das FPGA verwenden um 
VGA/RGB Ausgabe zu machen ...

Aber ich habe keine Ahnung von der Dimensionierung und ich habe auch 
Angst was kaputt zu machen.

Es gibt Schaltbilder von Tandy und Dragon im Netz. Leider bin ich nicht 
in der Lage das wirklich zu verstehen.

von Timmo H. (masterfx)


Lesenswert?

Letzten Endes musst der Gameport nur eine Spannung für jede Achse 
zwischen 0-5V (z. B. Ein Poti mit 100k). Du kanns das entweder mit einem 
R2R Widerstandsnetzwerk, einen uC mit DAC oder über PWM realisieren.

von Stefan F. (Gast)


Lesenswert?

Soweit ich weiss misst der PC nicht eine analoge Spannung sonder die 
Zeit, die ein Kondensator durch den Widerstand des Joysticks zum 
aufladen benötigt.

Andere Computer/Consolen funktionieren vielleicht anders.

Das Ganze wirklich universell zu machen ist schwierig, denn dazu muss 
man vermutlich die Potentiometer potentialfrei simulieren.

von Einer (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Soweit ich weiss misst der PC nicht eine analoge Spannung sonder die
> Zeit, die ein Kondensator durch den Widerstand des Joysticks zum
> aufladen benötigt.

Absolut richtig.
Eine vierfach Monostabile Kippstufe muß gesetzt werden.
Danach wird gewartet und gezählt bis sie zurückfällt.
Dazu sind 4 Buttons auslesbar.
Der Gameport wurde von mir gern für andere Zwecke genutzt da er auch 
gleich noch 5V lieferte.

Für Emulation einfach 100 kiloohm Digitalpotis nehmen.

von Thomas W. (diddl)


Lesenswert?

Einer schrieb:
> Für Emulation einfach 100 kiloohm Digitalpotis nehmen.

Ah!
Sowas gibt es?
Genial! Danke!

Sowas in der Art: DS1803-100
https://www.ebay.de/itm/5-x-DS1803-100-SMD-16-Addressable-Dual-Digital-Potentiometer-100K/184083876616


Würde das funktionieren?

von Thomas W. (diddl)


Lesenswert?

Sieht ganz einfach aus ...

Danke für den Tip! :-)

Werde die mal bestellen und hier berichten, wenn es klappt.

von Thomas W. (diddl)


Lesenswert?

Mit den digitalen Potentiometer funktioniert es tadellos. Folgende Typen 
sind getestet:
- X9C104
- DS1803-100
- DS1804-100


Es funktioniert tadellos am Dragon-32, Dragon-64 und alle Arten Tandy 
Color Computer.

Der alte PC Gameport kann leider aufgrund fehlender Hardware nicht 
getestet werden.


Doku: https://oe7twj.at/index.php?title=AnalogJOY

von Guido Körber (Gast)


Lesenswert?

Wie schon geschrieben wurde: Gameport braucht einen 100 kΩ Poti, weil 
der Teil eines Monoflops mit einem NE556 o.ä. ist.

Bei Apple II sind es 150 kΩ, gleiches Funktionsprinzip.

Die einfachste Option ist mal in den Joystick zu gucken, ob der nicht 
ohnehin solche Potis drin hat. Dann kann man die Elektronik raus werfen 
und die Anschlüsse direkt raus führen.

Ist schon witzig, ich mache das meistens eher genau umgekehrt, also 
alten Joystick nehmen und USB-Joystick-Controller einbauen.

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.