Arduino UNO R4 - Joystick
In deze gids leren we hoe u een joystick met Arduino UNO R4 gebruikt. We behandelen:
- Hoe een joystick werkt
- Hoe u een joystick op Arduino UNO R4 aansluit
- Hoe u Arduino UNO R4 programmeert om waarden van een joystick te lezen
- Hoe u de waarden die van de joystick worden gelezen omzet in bruikbare waarden (bijv. XY-coördinaten of richtingen voor een motor)

Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables STEM V4 IoT Starterskit (Arduino inbegrepen) | |
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de Joystick
U heeft misschien wel eens een joystick gezien die wordt gebruikt als game controller, speelgoed controller, of zelfs in grote machines zoals graafmachine controllers.
De joystick heeft twee potentiometers gerangschikt in een vierkante formatie en één drukknop. Deze geeft de volgende uitgangen:
- Een analoge waarde (van 0 tot 1023) voor de horizontale positie (X-coördinaat)
- Een analoge waarde (van 0 tot 1023) voor de verticale positie (Y-coördinaat)
- Een digitale status van een knop (HIGH of LOW)
Wanneer u twee analoge waarden combineert, vormen ze 2-D coördinaten. Deze coördinaten zijn gecentreerd wanneer de joystick niet wordt bewogen. U kunt gemakkelijk de werkelijke richting van deze coördinaten achterhalen door een testcode uit te voeren, wat we in het volgende gedeelte zullen behandelen.
Sommige toepassingen gebruiken mogelijk alle drie uitgangen, terwijl andere mogelijk slechts enkele ervan gebruiken.
Pinout
Een joystick gebruikt vijf pinnen.
- GND-pin: verbind met GND (0V)
- VCC-pin: verbind met VCC (5V)
- VRX-pin: geeft een analoge waarde voor de horizontale positie (X-coördinaat).
- VRY-pin: geeft een analoge waarde voor de verticale positie (Y-coördinaat).
- SW-pin: komt van de drukknop van de joystick. Deze is meestal open. Het gebruik van een pull-up weerstand maakt deze pin HIGH wanneer niet ingedrukt en LOW wanneer ingedrukt.

Hoe het Werkt
- Links/Rechts Beweging
- Wanneer u de joystick naar links of rechts beweegt, verandert dit het elektrische signaal (spanning) op de VRX-pin.
- Naar links bewegen verlaagt de spanning naar 0 volt.
- Naar rechts bewegen verhoogt de spanning naar 5 volt.
- De Arduino leest deze spanning en zet deze om naar een getal tussen 0 en 1023. Dus 0V komt overeen met 0, en 5V komt overeen met 1023.
- Omhoog/Omlaag Beweging:
- Op dezelfde manier verandert het bewegen van de joystick omhoog of omlaag de spanning op de VRY-pin.
- Omhoog bewegen verlaagt de spanning naar 0 volt.
- Omlaag bewegen verhoogt de spanning naar 5 volt.
- De Arduino leest deze spanning ook en zet deze om naar een getal tussen 0 en 1023, net als bij de VRX-pin.
- Gecombineerde Bewegingen:
- Wanneer u de joystick in elke richting beweegt (niet alleen puur links/rechts of omhoog/omlaag), verandert dit de spanning op zowel VRX- als VRY-pinnen gebaseerd op de positie langs elke as.
- De Joystick Indrukken:
- Wanneer u de joystick naar beneden drukt (zoals het indrukken van een knop), activeert dit een interne knop in de joystick.
- Als u een pull-up weerstand aansluit op de SW-pin, zal de spanning op deze pin veranderen van 5V naar 0V wanneer ingedrukt.
- De Arduino leest deze verandering als een digitaal signaal, dat HIGH (5V) toont wanneer niet ingedrukt en LOW (0V) wanneer ingedrukt.
Samenvattend: het bewegen van de joystick verandert spanningen op VRX en VRY, die de Arduino leest als getallen tussen 0 en 1023. Het indrukken van de joystick verandert de spanning op de SW-pin, die de Arduino leest als HIGH of LOW.
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.
Hoe Te Programmeren Voor Joystick
De joystick bestaat uit twee componenten: een analoog deel (X- en Y-as) en een digitaal deel (een drukknop).
- Om de waarden voor de X- en Y-assen te lezen, gebruikt u eenvoudig de functie analogRead() op de analoge ingangspin.
- Voor het digitale deel, wat een drukknop is: het is gewoon een knop. Een gemakkelijke en effectieve methode is het gebruik van de ezButton bibliotheek. Deze bibliotheek helpt de stabiliteit van de knop te beheren en activeert ook een intern systeem om de knop stabiel te houden. U kunt meer leren in de Arduino UNO R4 - Button tutorial. We zullen u laten zien hoe de code te gebruiken in het volgende deel van deze tutorial.
Na het verkrijgen van de waarden van analoge pinnen, moeten we ze mogelijk omzetten in beheersbare waarden. Het volgende gedeelte zal voorbeeldcodes hiervoor geven.
Arduino UNO R4 Code
Hier zijn voorbeeldcodes voor Arduino UNO R4:
- Voorbeeldcode: verkrijgt analoge waarden van joystick
- Voorbeeldcode: verkrijgt analoge waarden en controleert knopstatus op joystick
- Voorbeeldcode: zet analoge waarde om naar commando's: MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Voorbeeldcode: zet analoge waarden om naar hoeken om twee servomotoren te besturen (zoals in een pan-tilt camera)
Leest analoge waarden van joystick
Snelle Stappen
Volg deze instructies stap voor stap:
- Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
- Sluit de joystick aan op Arduino UNO R4 volgens het bijgeleverde schema.
- Verbind het Arduino Uno R4 bord met uw computer via een USB-kabel.
- Start de Arduino IDE op uw computer.
- Selecteer het juiste Arduino Uno R4 bord (bijv. Arduino Uno R4 WiFi) en COM-poort.
- Kopieer de bovenstaande code en open deze in Arduino IDE
- Klik op de Upload knop in Arduino IDE om de code naar uw Arduino UNO R4 te uploaden
- Duw de joystick's duim helemaal naar de rand, draai deze vervolgens in een cirkel (klokgewijs of tegen de klok in)
- Controleer de resultaten op de Serial Monitor.
- Wanneer u de joystick draait, houd de Serial Monitor in de gaten. Als de X-waarde 0 toont, onthoud deze positie als links; het tegenovergestelde is rechts. Als de Y-waarde 0 is, noteer deze positie als omhoog; het tegenovergestelde is omlaag.
Leest analoge waarden en leest de knopstatus van een joystick
Snelle Stappen
- Ga naar het Libraries pictogram aan de linkerkant van de Arduino IDE.
- Zoek naar "ezButton" en vind de knop bibliotheek van ArduinoGetStarted.com
- Druk op de Install knop om de ezButton bibliotheek toe te voegen.

- Kopieer de code en open deze in Arduino IDE.
- Klik op de Upload knop in Arduino IDE om de code naar de Arduino UNO R4 te uploaden.
- Beweeg de joystick duim naar links, rechts, omhoog of omlaag.
- Druk naar beneden op de bovenkant van de joystick.
- Controleer de resultaten op de Serial Monitor.
Zet analoge waarde om naar MOVE LEFT/RIGHT/UP/DOWN commando's
Snelle Stappen
- Kopieer de bovenstaande code en open deze met Arduino IDE.
- Klik op de Upload knop in Arduino IDE om de code naar Arduino UNO R4 te uploaden.
- Beweeg de joystick duim naar links, rechts, omhoog, omlaag of in een andere richting.
- Controleer de resultaten op de Serial Monitor.
※ Notiz:
Soms kan er geen commando zijn, één commando, of twee commando's tegelijkertijd (bijvoorbeeld UP en LEFT samen).
Zet analoge waarden om naar hoeken om twee servomotoren te besturen
U kunt informatie vinden in de Arduino UNO R4 - Joystick bestuurt Servo Motor tutorial.
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.