Arduino UNO R4 - Joystick
In diesem Leitfaden lernen wir, wie man einen Joystick mit dem Arduino UNO R4 verwendet. Wir werden Folgendes behandeln:
- Wie ein Joystick funktioniert
- Wie man einen Joystick an den Arduino UNO R4 anschließt
- Wie man den Arduino UNO R4 programmiert, um Werte von einem Joystick auszulesen
- Wie man die vom Joystick gelesenen Werte in umsetzbare Werte umwandelt (z. B. XY-Koordinaten oder Richtungen für einen Motor)

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V4 IoT Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Joystick
Vielleicht haben Sie schon einen Joystick gesehen, der als Gamecontroller, als Spielzeugsteuerung oder sogar in großen Maschinen wie Baggersteuerungen verwendet wird.
Der Joystick besitzt zwei Potentiometer, die in einer quadratischen Anordnung angeordnet sind, sowie einen Druckknopf. Er liefert die folgenden Ausgänge:
- Ein Analogwert (von 0 bis 1023) für die horizontale Position (X-Koordinate)
- Ein Analogwert (von 0 bis 1023) für die vertikale Position (Y-Koordinate)
- Ein digitaler Zustand eines Tasters (HIGH oder LOW)
Wenn Sie zwei analoge Werte kombinieren, ergeben sie 2-D-Koordinaten. Diese Koordinaten sind zentriert, wenn der Joystick nicht bewegt wird. Sie können die tatsächliche Richtung dieser Koordinaten ganz einfach herausfinden, indem Sie einen Testcode ausführen, den wir im nächsten Abschnitt behandeln werden.
Einige Anwendungen verwenden möglicherweise alle drei Ausgänge, während andere nur einige von ihnen verwenden.
Pinbelegung
Ein Joystick verwendet fünf Pins.
- GND-Pin: mit GND (0 V) verbinden
- VCC-Pin: mit VCC (5 V) verbinden
- VRX-Pin: liefert einen analogen Wert für die horizontale Position (X-Koordinate).
- VRY-Pin: liefert einen analogen Wert für die vertikale Position (Y-Koordinate).
- SW-Pin: stammt vom Druckknopf des Joysticks. Er ist normalerweise offen. Durch einen Pull-up-Widerstand wird dieser Pin hoch, wenn er nicht gedrückt ist, und niedrig, wenn er gedrückt ist.

Wie es funktioniert
- Links/Rechts-Bewegung
- Wenn Sie den Joystick nach links oder rechts bewegen, ändert sich das elektrische Signal (Spannung) am VRX-Pin.
- Beim Bewegen nach links sinkt die Spannung auf 0 Volt.
- Beim Bewegen nach rechts erhöht sich die Spannung auf 5 Volt.
- Der Arduino liest diese Spannung ebenfalls aus und wandelt sie in eine Zahl zwischen 0 und 1023 um. 0 Volt entspricht also 0 und 5 Volt entspricht 1023.
- Hoch-/Runter-Bewegung
- Ebenso ändert das Bewegen des Joysticks nach oben oder unten die Spannung am VRY-Pin.
- Beim Bewegen nach oben sinkt die Spannung auf 0 Volt.
- Beim Bewegen nach unten erhöht sich die Spannung auf 5 Volt.
- Der Arduino liest diese Spannung ebenfalls aus und wandelt sie in eine Zahl zwischen 0 und 1023 um, genauso wie beim VRX-Pin.
- Kombinierte Bewegungen:
- Wenn Sie den Joystick in irgendeine Richtung bewegen (nicht nur rein links/rechts oder hoch/runter), ändert sich die Spannung am VRX-Pin und am VRY-Pin entsprechend seiner Position entlang jeder Achse.
- Drücken des Joysticks:
- Wenn Sie den Joystick nach unten drücken (wie das Drücken eines Knopfes), aktiviert sich im Joystick ein interner Knopf.
- Schließen Sie einen Pull-up-Widerstand an den SW-Pin an, ändert sich die Spannung an diesem Pin beim Drücken von 5 V auf 0 V.
- Der Arduino liest diese Änderung als digitales Signal aus und zeigt HIGH (5 V) an, wenn nicht gedrückt, und LOW (0 V), wenn gedrückt.
Zusammenfassend ändern sich beim Bewegen des Joysticks die Spannungen an VRX und VRY, die vom Arduino als Zahlen zwischen 0 und 1023 gelesen werden. Beim Drücken des Joysticks ändert sich die Spannung am SW-Pin, die vom Arduino als HIGH oder LOW gelesen wird.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.
Wie man für Joysticks programmiert
Der Joystick besteht aus zwei Komponenten: einem analogen Teil (X- und Y-Achse) und einem digitalen Teil (einem Druckknopf).
- Um die Werte für die X- und Y-Achsen abzulesen, verwenden Sie einfach die Funktion analogRead() am analogen Eingangspin.
- Für den digitalen Teil, der ein Druckknopf ist: Es ist einfach nur ein Knopf. Eine einfache und effektive Methode ist die Verwendung der ezButton-Bibliothek. Diese Bibliothek hilft, die Stabilität des Knopfes zu verwalten, und aktiviert außerdem ein internes System, um den Knopf stabil zu halten. Weitere Informationen finden Sie im Arduino UNO R4 - Knopf-Tutorial. Wir zeigen Ihnen, wie Sie den Code im nächsten Teil dieses Tutorials verwenden.
Nachdem wir die Messwerte von den analogen Pins erhalten haben, müssen wir sie möglicherweise in handhabbare Werte umwandeln. Der folgende Abschnitt enthält dazu Beispielcodes.
Arduino UNO R4 Quellcode
Hier sind Beispielcodes für Arduino UNO R4:
- Example code: holt analoge Werte vom Joystick
- Example code: holt analoge Werte und überprüft den Tastzustand am Joystick
- Example code: ändert analoge Werte in Befehle: MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Example code: wandelt analoge Werte in Winkel um, um zwei Servomotoren zu steuern (wie bei einer Schwenk-Neige-Kamera)
Liest analoge Werte vom Joystick
Schnelle Schritte
Folgen Sie diesen Anweisungen Schritt für Schritt:
- Wenn dies Ihre erste Verwendung des Arduino UNO R4 WiFi/Minima ist, lesen Sie das Tutorial zur Einrichtung der Entwicklungsumgebung für Arduino UNO R4 WiFi/Minima in der Arduino IDE (BASE_URL/tutorials/arduino-uno-r4/arduino-uno-r4-software-installation).
- Verbinden Sie den Joystick gemäß dem bereitgestellten Diagramm mit dem Arduino UNO R4.
- Schließen Sie das Arduino UNO R4-Board über ein USB-Kabel an Ihren Computer an.
- Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das passende Arduino UNO R4-Board (z. B. Arduino UNO R4 WiFi) und den COM-Port aus.
- Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf Ihren Arduino UNO R4 hochzuladen.
- Bewegen Sie den Joystick ganz bis zum Rand und drehen Sie ihn dann in einer Kreisbewegung (im Uhrzeigersinn oder gegen den Uhrzeigersinn).
- Überprüfen Sie die Ergebnisse im Serial Monitor.
- Beim Drehen des Joysticks behalte den Serial Monitor im Auge. Wenn der X-Wert 0 anzeigt, merke dir diese Position als links; das Gegenstück dazu ist rechts. Wenn der Y-Wert 0 ist, merke dir diese Position als oben; das Gegenstück dazu ist unten.
Liest analoge Werte aus und liest den Tastzustand eines Joysticks aus
Schnelle Schritte
- Gehen Sie zum Bibliotheken-Symbol auf der linken Seite der Arduino IDE.
- Suchen Sie nach “ezButton” und finden Sie die Button-Bibliothek von ArduinoGetStarted.com.
- Drücken Sie die Install-Taste, um die ezButton-Bibliothek hinzuzufügen.

- Kopiere den Code und öffne ihn in der Arduino IDE.
- Klicke auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den Arduino UNO R4 hochzuladen.
- Bewege den Joystick-Stick nach links, rechts, oben oder unten.
- Drücke den oberen Teil des Joysticks nach unten.
- Überprüfe die Ergebnisse im Serial Monitor.
Konvertiert einen analogen Wert in Befehle zum Bewegen nach LINKS/RECHTS/OBEN/UNTEN
Schnelle Schritte
- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
- Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf Arduino UNO R4 hochzuladen.
- Bewegen Sie den Daumenstick nach links, rechts, oben, unten oder in eine andere Richtung.
- Überprüfen Sie die Ergebnisse im seriellen Monitor.
※ Notiz:
Manchmal gibt es möglicherweise keinen Befehl, einen Befehl oder zwei Befehle gleichzeitig (zum Beispiel UP und LEFT zusammen).
Konvertiert analoge Werte in Winkel, um zwei Servomotoren zu steuern
Sie finden Informationen zum Tutorial Arduino UNO R4 - Joystick-Steuerung des Servomotors.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.