Arduino Nano - Joystick
Deze tutorial legt uit hoe u een joystick gebruikt met de Arduino Nano. We leren in detail:
- Hoe een 2-assige joystick werkt
- Hoe u de joystick aansluit op de Arduino Nano en deze programmeert
- Hoe u de waarden van de joystick omzet in aansturingswaarden zoals XY-coördinaten, de motorbeweging omhoog/omlaag/links/rechts...

Hardware Vereist
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over 2-assige Joystick
U bent waarschijnlijk een joystick tegengekomen op verschillende plekken, zoals een gamecontroller, speelgoedbesturing of zelfs een groot apparaat zoals het bedieningspaneel van een graafmachine.
De joystick bestaat uit twee potentiometers die loodrecht op elkaar staan en een drukknop. Daardoor levert hij de volgende outputs:
- Een analoge waarde van 0 tot 1023 (uitgelezen door Arduino) die overeenkomt met de horizontale positie (bekend als de X-coördinaat)
- Een analoge waarde van 0 tot 1023 (uitgelezen door Arduino) die overeenkomt met de verticale positie (bekend als de Y-coördinaat)
- Een digitale waarde van de drukknop (HIGH of LOW)
Daarom:
- Twee analoge waarden kunnen gecombineerd worden om 2D-coördinaten te creëren.
- Het midden van het 2D-coördinatenstelsel is de rustpositie van de joystick.
- Om de richting van de joystick te bepalen, kunt u testcode uitvoeren die deze informatie in de volgende sectie toont.
Sommige toepassingen gebruiken alle drie de outputs, andere gebruiken er slechts een deel van.
De Joystick Pinout
Een joystick heeft 5 pinnen:
- GND pin: Moet worden aangesloten op GND (0V).
- VCC pin: Moet worden aangesloten op VCC (5V).
- VRX pin: Levert een analoge waarde die correspondeert met de horizontale positie (X-coördinaat).
- VRY pin: Levert een analoge waarde die correspondeert met de verticale positie (Y-coördinaat).
- SW pin: Dit is de output van de drukknop in de joystick. Normaal gesproken is deze open. Als u een pull-up weerstand gebruikt op deze pin, is de SW pin HIGH als hij niet is ingedrukt en LOW als hij wel is ingedrukt.

Hoe Het Werkt
- Wanneer u de joystickknop naar links of rechts beweegt, varieert de spanning op de VRX pin van 0 tot 5V, met 0V links en 5V rechts, wat resulteert in een analoge uitlezing tussen 0 en 1023 op de Arduino.
- Wanneer u de joystickknop omhoog of omlaag beweegt, varieert de spanning op de VRY pin van 0 tot 5V, met 0V boven en 5V onder, wat resulteert in een analoge uitlezing tussen 0 en 1023 op de Arduino.
- Wanneer u de joystickknop in een willekeurige richting beweegt, verandert de spanning op zowel VRX als VRY pins evenredig met de projectie van de positie op elke as.
- Wanneer u de joystickknop indrukt (van boven naar beneden duwt), wordt de drukknop in de joystick gesloten. Met een pull-up weerstand aan de SW pin verandert de uitgang van deze pin van 5V (HIGH) naar 0V (LOW), wat zich vertaalt in een digitale input op de Arduino van HIGH naar LOW.
Aansluitschema

This image is created using Fritzing. Click to enlarge image
Hoe te Programmeren voor Joystick
De joystick bestaat uit twee onderdelen: analoog (X, Y as) en digitaal (drukknop):
- Voor de analoge delen (X, Y as) leest u simpelweg de waarde uit de analoge ingangen met de analogRead() functie.
- Voor het digitale deel (drukknop): dit is een knop. De eenvoudigste en meest handige manier om hem te gebruiken is met de ezButton library. Deze bibliotheek ondersteunt debounce voor knoppen en heeft een interne pull-up weerstand. Meer informatie over knoppen vindt u in de Arduino Nano - Button tutorial. De code hiervoor wordt in de volgende sectie van deze tutorial gepresenteerd.
Nadat u de waarden van de analoge pinnen hebt verkregen, kunt u deze omzetten in aansturingswaarden. De volgende sectie geeft voorbeeldcodes hiervoor.
Arduino Nano Code
Deze sectie geeft voorbeeldcodes voor de Arduino Nano voor:
- Voorbeeldcode: analoge waarden uitlezen van de joystick
- Voorbeeldcode: analoge waarden en knopstatus uitlezen van de joystick
- Voorbeeldcode: analoge waarde omzetten naar MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN commando’s
- Voorbeeldcode: analoge waardes omzetten naar hoeken om twee servo motoren aan te sturen (bijv. bij een pan-tilt camera)
Leest analoge waarden van joystick
Snelle stappen
- Kopieer de code en open deze in de Arduino IDE.
- Klik op de Upload knop om de code naar de Arduino Nano te sturen.
- Beweeg de joystickknop helemaal en draai deze in een cirkelvormige beweging (met of tegen de klok in).
- Bekijk het resultaat op de Serial Monitor.
Let tijdens het draaien van de joystickknop goed op de Serial Monitor.
Als de X-waarde 0 is, noteer dan of onthoud dat de huidige positie links is, en de tegenovergestelde positie is rechts.
Als de Y-waarde 0 is, noteer dan of onthoud dat de huidige positie boven is, en de tegenovergestelde positie is onder.
Leest analoge waarden en knopstatus van joystick
Snelle stappen
- Klik op het Libraries icoon in de linkerbalk van de Arduino IDE.
- Zoek naar “ezButton” en selecteer de button library van ArduinoGetStarted.com.
- Klik daarna op de Install knop om de ezButton library te installeren.

- Kopieer de code en open deze met de Arduino IDE.
- Klik op de Upload knop om de code naar de Arduino Nano te sturen.
- Beweeg de joystickknop naar links, rechts, boven en onder.
- Druk de joystickknop van boven in.
- Bekijk de resultaten op de Serial Monitor.
Zet analoge waarde om naar MOVE LEFT/RIGHT/UP/DOWN commando’s
Snelle stappen
- Kopieer de code en open die in de Arduino IDE.
- Klik op de Upload knop in de IDE om de code naar de Arduino Nano te versturen.
- Beweeg de joystickknop in alle richtingen met uw duim.
- Bekijk de resultaten in de Serial Monitor.
※ Notiz:
Op elk gegeven moment kunnen er geen, één of twee commando’s actief zijn (bijvoorbeeld UP en LEFT tegelijkertijd).
Zet analoge waarden om in hoeken voor aansturing van twee servo motoren
De details vindt u in de tutorial Arduino Nano - Joystick controls 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 en helpt u stap voor stap door het proces.