altRobots
/robotigs/icons/actuator.pngActuatoren
/robotigs/icons/printboards.pngAlgemeen
/robotigs/icons/chassis.pngChassis
/robotigs/icons/arduino_logo.pngµControllers
/robotigs/icons/florigs.pngFlorigs
/robotigs/icons/interfacing.gifInterfacing
/robotigs/icons/microphone_icon.pngMuziek
/robotigs/icons/musicKey_icon.pngMuzikanten
/robotigs/icons/shield.pngSchildjes
/robotigs/icons/sensors.gifSensors
/robotigs/icons/languages.pngTalen
/robotigs/icons/battery.pngVoedingen
altContact
Joystick Analoog/robotigs/icons/login_key.png    alt  
Er bestaan joysticks voor diverse types van apparaten, zoals bijv. een Playstation, X-box, PC etc. Dit document gaat over joysticks die op een PC aangesloten kunnen worden. Tegenwoordig zijn dit alle joysticks met een USB aansluiting. Legacy aansluitingen zijn de (midi) gameport en serieel. Voorbeelden van joysticks zijn:
  1. Logitech® Extreme 3D Pro (USB)
  2. Microsoft® Sidewinder™ 3D Pro (Gameport)

2. Legacy Microsoft SideWinder 3D pro

Een introductie over de werking van analoge legacy linux joysticks kan worden gevonden op epanorama.net. Deze joystick http://www.freelink.cx/joystick.html (Microsoft® SideWinder™ 3D Pro) incorporates digital-optical technology for precision, speed, and reliability. Hij heeft geen aansluitingen op de pins 12 en 15 in zijn stekker. Dit leert ons direct dat het geen feedback joystick is, want feedback joysticks gebruiken de midi pins om de feedback te ontvangen van de pc. Verder kent de gameport enkele dubbel uitgevoerde pins, die in mijn stekker niet zijn opgenomen, oftewel, die pins ontbreken gewoon. Het betreft de pins 8 en 9 die beiden een duplicaat van pin 1 (5V) zijn. Verder is pin 5 niet uitgevoerd, die een duplicaat van pin 4 (Ground) is.

De communicatie tussen pc en deze joystick kan op 2 manieren verlopen:

  1. Analoog Eigenlijk is er geen communicatie in dit geval. De pins in de gameport stekker zijn direct aangeloten op de schakelaars en potmeters in de joystick. Dit levert uiteraard een beperking op in het aantal functies dat in een joystick kan worden opgenomen. Zo zijn er maximaal 4 buttons en 4 potmeters. Helaas is het niet mogelijk om deze joystick pin 1 van een aarde te voorzien in plaats van 5Vdc. Daaruit blijkt dat hij kennelijk gevoed moet worden om ook in de analoge modus correct te kunnen werken. Dat is jammer, want anders was het bijzonder simpel geweest om een spanningsdeler op te bouwen met 1 weerstand die het hele meetbereik zou benutten.
  2. Microsoft Digital Overdrive protocol Om deze beperking te omzeilen werd het populair om de meting al in de joystick uit te voeren en de meetresultaten digitaal door te geven naar de pc via een seriëel protocol. Dit protocol voedt zelfstandig continu data naar de gameport van de PC. Indien u ook een uitgang nodig heeft omdat uw joystick van het type feedack is, dan worden hiervoor de MIDI-pins in de gamepoort gebruikt.

    Microsoft Digital Overdrive protocol is supported by Microsoft SideWinder 3D Pro. There is one caveat with the 3D Pro. There are 9 buttons reported, although the joystick has only 8. The 9th button is the mode switch on the rear side of the joystick. However, moving it, you reset the joystick, and make it unresponsive for about a one third of a second. Furthermore, the joystick will also re-center itself, taking the position it was in during this time as a new center position.

Het is mij gebleken dat in zeer bijzondere gevallen de joystick kan vastlopen. In dat geval moet de joystick worden reset terwijl de connector nergens aan verbonden is. De joystick wordt gereset door de •/•• schakelaar aan de achterkant om te zetten. Deze schakelaar maakt een keuze tussen 2 verschillende emulaties. Enkel in stand • is het mogelijk om de throttle te gebruiken en daarom gebruiken wij die stand. In stand •• is het echter mogelijk om de switches van de joystick iets nauwkeuriger uit te lezen. De 4 buttons in de voet van de joystick zijn op deze manier niet te bereiken.

Analoog - Hierbij zijn de assen van de stick verbonden met potentiometers van 100klin.
Digitaal - Hierbij zijn de assen van de stick verbonden met schakelaars.

Female connector op mrBlue
DA15

Pin Joystick theorie Robot Sidewinder stand • Stand ••
1 XY1 (+5v) Joystick A 5Vdc Voeding +5Vdc Voeding +5Vdc
2 Switch 1 Joystick A D6 Fire Button
3 X1 Joystick A ADC0 (C0) X coordinate stick
4 Ground (for switch 1&2) Joystick A Aarde Voeding Ground Voeding Ground
5 Ground (for switch 3&4) Joystick A Leeg
6 Y1 Joystick A ADC1 (C1) Y coordinate stick
7 Switch 2 Joystick A D5 Top button
8 NC - Leeg
9 XY2 (+5v) Joystick B Leeg
10 Switch 3 Joystick B D4 Button boven
11 X2 Joystick B ADC2 (C2) Draaien
12 NC PC=>MIDI Leeg
13 Y2 Joystick B ADC3 (C3) Throttle schuif
14 Switch 4 Joystick B D3 Button onder
15

De nauwkeurigheid met 1 weerstand van gelijke grootte als de joystick lijkt voldoende te zijn. Nadelen zijn dat er slechts 60% van het meetbereik wordt gebruikt en dat de functie niet lineair is. Er zal dus met iets als een conversietabel gewerkt moeten worden.


Deze Logitech Extreme 3D Pro heb ik gekregen op mijn verjaardag van 2013. Hij heeft een USB aansluiting en is daarom digitaal. Dit in tegenstelling tot de verouderde analoge joysticks die via de gameport werken, zoals de Microsoft SideWinder 3D Pro (zie onder). Onder Ubuntu meldt de joystick zich automatisch aan en is dus hotpluggable. Anno 2014 kent latop default al een js0, dus wordt js1 geopend. Verder wordt er ook een stream met de naam event9 geopend.

Een test kan worden uitgevoerd met jstest /dev/input/js1 of nog leuker met cat /dev/input/js1 dat de output laat zien die wij willen gebruiken. cat /dev/input/event9 laat zijn dat ook dit data spuugt, maar jstest kan er geen joystick in zien.

Door het bestand /dev/input/js1 byte voor byte uit te lezen kan er met sdlBasic een quick en dirty programmaatje worden gemaakt om de joystick geluidjes te laten maken. Het blijkt dat er telkens 8 bytes worden uitgespogen om een verandering aan te geven. De eerste 3 bytes zijn een LSB-tijdcode. Byte 4 is altijd 0. De volgende 2 bytes geven de gewijzigde waarde. De laatste 2 bytes geven aan om welke switch of as het gaat.

2. Legacy Microsoft SideWinder 3D pro

Een introductie over de werking van analoge legacy linux joysticks kan worden gevonden op epanorama.net. Deze joystick http://www.freelink.cx/joystick.html (Microsoft® SideWinder™ 3D Pro) incorporates digital-optical technology for precision, speed, and reliability. Hij heeft geen aansluitingen op de pins 12 en 15 in zijn stekker. Dit leert ons direct dat het geen feedback joystick is, want feedback joysticks gebruiken de midi pins om de feedback te ontvangen van de pc. Verder kent de gameport enkele dubbel uitgevoerde pins, die in mijn stekker niet zijn opgenomen, oftewel, die pins ontbreken gewoon. Het betreft de pins 8 en 9 die beiden een duplicaat van pin 1 (5V) zijn. Verder is pin 5 niet uitgevoerd, die een duplicaat van pin 4 (Ground) is.

De communicatie tussen pc en deze joystick kan op 2 manieren verlopen:

  1. Analoog Eigenlijk is er geen communicatie in dit geval. De pins in de gameport stekker zijn direct aangeloten op de schakelaars en potmeters in de joystick. Dit levert uiteraard een beperking op in het aantal functies dat in een joystick kan worden opgenomen. Zo zijn er maximaal 4 buttons en 4 potmeters. Helaas is het niet mogelijk om deze joystick pin 1 van een aarde te voorzien in plaats van 5Vdc. Daaruit blijkt dat hij kennelijk gevoed moet worden om ook in de analoge modus correct te kunnen werken. Dat is jammer, want anders was het bijzonder simpel geweest om een spanningsdeler op te bouwen met 1 weerstand die het hele meetbereik zou benutten.
  2. Microsoft Digital Overdrive protocol Om deze beperking te omzeilen werd het populair om de meting al in de joystick uit te voeren en de meetresultaten digitaal door te geven naar de pc via een seriëel protocol. Dit protocol voedt zelfstandig continu data naar de gameport van de PC. Indien u ook een uitgang nodig heeft omdat uw joystick van het type feedack is, dan worden hiervoor de MIDI-pins in de gamepoort gebruikt.

    Microsoft Digital Overdrive protocol is supported by Microsoft SideWinder 3D Pro. There is one caveat with the 3D Pro. There are 9 buttons reported, although the joystick has only 8. The 9th button is the mode switch on the rear side of the joystick. However, moving it, you reset the joystick, and make it unresponsive for about a one third of a second. Furthermore, the joystick will also re-center itself, taking the position it was in during this time as a new center position.

Het is mij gebleken dat in zeer bijzondere gevallen de joystick kan vastlopen. In dat geval moet de joystick worden reset terwijl de connector nergens aan verbonden is. De joystick wordt gereset door de •/•• schakelaar aan de achterkant om te zetten. Deze schakelaar maakt een keuze tussen 2 verschillende emulaties. Enkel in stand • is het mogelijk om de throttle te gebruiken en daarom gebruiken wij die stand. In stand •• is het echter mogelijk om de switches van de joystick iets nauwkeuriger uit te lezen. De 4 buttons in de voet van de joystick zijn op deze manier niet te bereiken.

Analoog - Hierbij zijn de assen van de stick verbonden met potentiometers van 100klin.
Digitaal - Hierbij zijn de assen van de stick verbonden met schakelaars.

Female connector op mrBlue
DA15

Pin Joystick theorie Robot Sidewinder stand • Stand ••
1 XY1 (+5v) Joystick A 5Vdc Voeding +5Vdc Voeding +5Vdc
2 Switch 1 Joystick A D6 Fire Button
3 X1 Joystick A ADC0 (C0) X coordinate stick
4 Ground (for switch 1&2) Joystick A Aarde Voeding Ground Voeding Ground
5 Ground (for switch 3&4) Joystick A Leeg
6 Y1 Joystick A ADC1 (C1) Y coordinate stick
7 Switch 2 Joystick A D5 Top button
8 NC - Leeg
9 XY2 (+5v) Joystick B Leeg
10 Switch 3 Joystick B D4 Button boven
11 X2 Joystick B ADC2 (C2) Draaien
12 NC PC=>MIDI Leeg
13 Y2 Joystick B ADC3 (C3) Throttle schuif
14 Switch 4 Joystick B D3 Button onder
15

De nauwkeurigheid met 1 weerstand van gelijke grootte als de joystick lijkt voldoende te zijn. Nadelen zijn dat er slechts 60% van het meetbereik wordt gebruikt en dat de functie niet lineair is. Er zal dus met iets als een conversietabel gewerkt moeten worden.


Algemene informatie over dit onderdeel
Menu groep  Sensors
Laatste verandering  2020-05-19

Software voor dit onderdeel
joystickTest.pyx.py  PC inrichting

Robots waar dit onderdeel in zit
mrBolderbot
Just wait till your 57....
Afb 1: Joystick Microsoft 3D Pro