Raspberry Pi - Joystick
Deze handleiding laat u zien hoe u een joystick gebruikt met de Raspberry Pi. We duiken in:
- De basisprincipes van hoe een joystick werkt
- Het aansluiten van een joystick op de Raspberry Pi en het programmeren ervan
- Het omzetten van joystickwaarden naar aansturingswaarden zoals XY-coördinaten en motorrichtingen omhoog/omlaag/links/rechts...

Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de 2-assige Joystick
U bent waarschijnlijk een joystick tegengekomen op verschillende plekken, zoals een gamecontroller, speelgoedbesturing of zelfs een grote machine zoals een graafmachinecontroller.
De joystick bestaat uit twee potentiometers die in een vierkante opstelling zitten, en één drukknop (push button). Het biedt de volgende outputs:
- Een analoge waarde van 0 tot 1023 die overeenkomt met de horizontale positie (bekend als de X-coördinaat)
- Een analoge waarde van 0 tot 1023 die overeenkomt met de verticale positie (bekend als de Y-coördinaat)
- Een digitale waarde van de drukknop (HIGH of LOW)
De combinatie van twee analoge waarden kan 2D-coördinaten genereren waarbij het midden de waarden zijn als de joystick in ruststand staat. Om de werkelijke richting van de coördinaten te bepalen, kunt u een testcode draaien (deze wordt in de volgende sectie gepresenteerd).
Sommige toepassingen gebruiken alle drie outputs, andere alleen een deel ervan.
De Pinout van de Joystick
Een joystick heeft 5 pinnen:
- GND pin: Moet worden aangesloten op GND (0V).
- VCC pin: Moet worden aangesloten op VCC (5V).
- VRX pin: Stuurt een analoge waarde uit die overeenkomt met de horizontale positie (de X-coördinaat).
- VRY pin: Stuurt een analoge waarde uit die overeenkomt met de verticale positie (de Y-coördinaat).
- SW pin: Dit is de output van de drukknop binnenin de joystick. Deze is normaal open. Als er een pull-up weerstand op deze pin wordt toegepast, is de SW pin HIGH wanneer niet ingedrukt, en LOW wanneer ingedrukt.

Hoe het Werkt
- Wanneer u de joystick omhoog of omlaag beweegt, verandert de spanning op de VRX pin. Deze spanningsrange loopt van 0V tot 5V, waarbij 0V aan de linkerzijde zit en 5V aan de rechterkant, wat resulteert in een uitlezing op de analoge pin van de Raspberry Pi tussen 0 en 1023.
- Op dezelfde manier, wanneer u de joystick omhoog of omlaag beweegt, verandert de spanning op de VRY pin. Deze spanningsrange loopt van 0V tot 5V, waarbij 0V aan de bovenkant zit en 5V aan de onderkant, met een uitlezing van 0 tot 1023.
- Bij beweging in willekeurige richtingen verandert de spanning van zowel VRX als VRY in verhouding tot de projectie van de positie op elke as.
- Wanneer u de joystick indrukt (top naar beneden duwt), wordt de interne drukknop gesloten. Als er een pull-up weerstand gebruikt wordt op de SW pin, verandert de uitgang op SW van 5V naar 0V, wat resulteert in een digitale uitlezing die van HIGH naar LOW gaat op de Raspberry Pi.
Aansluitschema

This image is created using Fritzing. Click to enlarge image
Raspberry Pi Code
Deze sectie laat de volgende voorbeeldcodes voor Raspberry Pi zien:
- Voorbeeldcode: Uitlezen van analoge waarden van de joystick
- Voorbeeldcode: Uitlezen van analoge waarden en knopstatus van de joystick
- Voorbeeldcode: Omzetten van analoge waarden naar commando's zoals MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Voorbeeldcode: Omzetten van analoge waarden naar hoeken voor de aansturing van twee servo motoren (bijvoorbeeld in een pan-tilt camera)
Uitlezen van analoge waarden van de joystick
Snelle Stappen
- Zorg dat u Raspbian of een ander Raspberry Pi-compatibel besturingssysteem geïnstalleerd heeft op uw Pi.
- Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
- Zorg dat uw Raspberry Pi verbonden is met internet als u nog libraries moet installeren.
- Als dit de eerste keer is dat u een Raspberry Pi gebruikt, bekijk dan de handleiding hoe u de Raspberry Pi installeert
- Verbind uw pc met de Raspberry Pi via SSH met de ingebouwde SSH-client op Linux en macOS of PuTTY op Windows. Bekijk hoe u uw pc verbindt met Raspberry Pi via SSH.
- Controleer of de RPi.GPIO library geïnstalleerd is. Zo niet, installeer deze dan met het volgende commando:
- Installeer de Adafruit_ADS1x15 library door de volgende commando’s uit te voeren in de terminal van de Raspberry Pi:
- Maak een Python scriptbestand aan met de naam joystick.py en voeg de volgende code toe:
- Sla het bestand op en start het Python-script door het volgende commando in de terminal uit te voeren:
- Beweeg de joystick volledig naar een kant en draai hem vervolgens met de klok mee of tegen de klok in.
- Bekijk de resultaten in het Terminal-venster.
Terwijl u de joystick beweegt, let goed op de Terminal.
Als de X-waarde 0 is, noteer of onthoud dan deze positie als links; de tegenovergestelde richting is rechts.
Als de Y-waarde 0 is, noteer of onthoud dan deze positie als omhoog; de tegenovergestelde richting is omlaag.
Het script draait in een oneindige lus totdat u Ctrl + C in de terminal indrukt.
Uitlezen van analoge waarden en de knopstatus van de joystick
Snelle Stappen
- Maak een Python scriptbestand aan met de naam joystick_sw.py en voeg de volgende code toe:
- Sla het bestand op en start het Python-script door het volgende commando in de terminal uit te voeren:
- Beweeg de joystick naar links, rechts, omhoog of omlaag.
- Druk de joystick in (duw de top naar beneden).
- Bekijk de resultaten in het Terminal-venster.
Omzetten van analoge waarden naar MOVE LEFT/RIGHT/UP/DOWN commando’s
Snelle Stappen
- Maak een Python scriptbestand aan met de naam joystick_cmd.py en voeg de volgende code toe:
- Sla het bestand op en start het Python-script door het volgende commando in de terminal uit te voeren:
- Beweeg de joystick in willekeurige richting.
- Bekijk het resultaat in de Terminal.
※ Notiz:
Op een gegeven moment kan er geen commando zijn, één commando, of twee commando’s tegelijk (bijvoorbeeld UP en LEFT).
Omzetten van analoge waarden naar hoeken voor het aansturen van twee servo motoren
De details zijn te vinden in de handleiding Raspberry Pi - Joystick bestuurt Servo Motor.
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.
Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten om de stappen beter te begrijpen.