Arduino - Joystick
In diesem Tutorial werden wir lernen, wie man einen Joystick mit Arduino verwendet. Im Detail werden wir lernen:
- Wie ein Joystick funktioniert
- Wie man einen Joystick an Arduino anschließt und dafür programmiert
- Wie man die Werte vom Joystick in steuerbare Werte umwandelt, z. B. XY-Koordinaten, die Auf- und Abwärtsrichtung sowie die Links- und Rechtsrichtung des Motors ...

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den Joystick-Sensor
Du siehst den Joystick wahrscheinlich irgendwo, zum Beispiel als Spielcontroller, als Spielzeug-Controller oder sogar als eine große echte Maschine wie eine Baggersteuerung.
Der Joystick besteht aus zwei Potentiometern, die zueinander quadratisch ausgerichtet sind, und einem Druckknopf. Daher liefert er die folgenden Ausgänge:
- Ein analoger Wert (von 0 bis 1023), der der horizontalen Position entspricht (X-Koordinate genannt)
- Ein analoger Wert (von 0 bis 1023), der der vertikalen Position entspricht (Y-Koordinate genannt)
- Ein digitaler Wert eines Tasters (HIGH oder LOW)
Die Kombination aus zwei analogen Werten kann zweidimensionale Koordinaten erzeugen, deren Mittelpunktwerte auftreten, wenn der Joystick sich in der Ruheposition befindet. Die tatsächliche Richtung der Koordinaten lässt sich einfach bestimmen, wenn man einen Testcode ausführt (im nächsten Teil).
Einige Anwendungen verwenden möglicherweise alle drei Ausgänge, einige Anwendungen verwenden möglicherweise einige der drei Ausgänge.
Pinbelegung
Ein Joystick hat 5 Pins:
- GND-Pin: muss mit GND (0 V) verbunden werden
- VCC-Pin: muss mit VCC (5 V) verbunden werden
- VRX-Pin: gibt einen analogen Wert aus, der der horizontalen Position entspricht (X-Koordinate genannt).
- VRY-Pin: gibt einen analogen Wert aus, der der vertikalen Position entspricht (Y-Koordinate genannt).
- SW-Pin: ist der Ausgang des Tasters im Joystick. Er ist normalerweise offen. Wenn wir an diesem Pin einen Pull-up-Widerstand verwenden, ist der SW-Pin hoch, wenn er nicht gedrückt ist, und niedrig, wenn er gedrückt wird.

So funktioniert es
- Wenn du den Joystick nach links/rechts bewegst, ändert sich die Spannung am VRX-Pin. Der Spannungsbereich reicht von 0 bis 5 V (0 links und 5 V rechts). Der Spannungswert ist proportional zur Position des Sticks ⇒ Der Messwert am analogen Pin des Arduino liegt zwischen 0 und 1023
- Wenn du den Joystick nach oben/unten bewegst, ändert sich die Spannung am VRY-Pin. Der Spannungsbereich reicht von 0 bis 5 V (0 oben und 5 V unten). Der Spannungswert ist proportional zur Position des Sticks ⇒ Der Messwert am analogen Pin des Arduino liegt zwischen 0 und 1023
- Wenn du den Joystick in eine beliebige Richtung bewegst, ändern sich die Spannungen an VRX- und VRY-Pins proportional zur Projektion der Position auf jeder Achse
- Wenn du den Joystick von oben nach unten drückst, schließt der integrierte Druckschalter im Joystick. Wenn wir am SW-Pin einen Pull-Up-Widerstand verwenden, ändert sich der Ausgang am SW-Pin von 5 V auf 0 V ⇒ Der Messwert am digitalen Pin des Arduino ändert sich von HIGH zu LOW
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wie man für Joysticks programmiert
Der Joystick besteht aus zwei Teilen: analog (X- und Y-Achse) und digital (Druckknopf).
- Für die analogen Teile (X- und Y-Achse) muss man lediglich den Wert vom analogen Eingangspin auslesen, indem man die Funktion analogRead() verwendet.
- Für den digitalen Teil (Pushbutton): Es handelt sich um einen Knopf. Der einfachste und bequemste Weg ist die Verwendung der ezButton-Bibliothek. Diese Bibliothek unterstützt die Entprellung von Tastern und aktiviert außerdem einen internen Pull-Up-Widerstand. Weitere Informationen zum Taster finden Sie im Arduino - Button Tutorial. Der Code wird im nächsten Abschnitt dieses Tutorials vorgestellt.
Nachdem wir die Werte von analogen Pins gelesen haben, müssen wir sie möglicherweise in steuerbare Werte umwandeln. Der nächste Abschnitt wird dazu Beispielcodes bereitstellen.
Arduino-Code
Dieser Abschnitt wird die folgenden Arduino-Beispielcodes bereitstellen:
- Beispielcode: liest analoge Werte vom Joystick aus
- Beispielcode: liest analoge Werte und den Tastzustand vom Joystick aus
- Beispielcode: wandelt analoge Werte in die Befehle MOVE_LEFT, MOVE_RIGHT, MOVE_UP und MOVE_DOWN um
- Beispielcode: wandelt analoge Werte in Winkel um, um zwei Servomotoren zu steuern (z. B. in einer Pan-Tilt-Kamera)
Liest analoge Werte vom Joystick
Schnelle Schritte
- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf das Arduino-Board hochzuladen.
- Drücken Sie den Joystick mit dem Daumen maximal bis zum Anschlag und drehen Sie ihn dann in einer Kreisbewegung (im Uhrzeigersinn oder gegen den Uhrzeigersinn).
- Sehen Sie das Ergebnis im seriellen Monitor.
- Beim Drehen des Joysticks mit dem Daumen den Seriemonitor weiter beobachten
- Wenn der X-Wert 0 ist, markiere oder merke die aktuelle Position als links ⇒ die entgegengesetzte Richtung rechts
- Wenn der Y-Wert 0 ist, markiere oder merke die aktuelle Position als oben ⇒ die entgegengesetzte Richtung unten
- Gehen Sie zum Bibliotheken-Symbol in der linken Seitenleiste der Arduino IDE.
- Suchen Sie „ezButton“, dann finden Sie die Button-Bibliothek von ArduinoGetStarted.com
- Klicken Sie auf die Installieren-Schaltfläche, um die ezButton-Bibliothek zu installieren.
- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
- Klicken Sie in der Arduino IDE auf die Schaltfläche Hochladen, um den Code auf Arduino hochzuladen
- Drücken Sie den Daumenknopf des Joysticks nach links/rechts/oben/unten
- Drücken Sie den Daumenknopf des Joysticks von oben
- Sehen Sie das Ergebnis im seriellen Monitor
- Kopiere den obigen Code und öffne ihn mit der Arduino IDE.
- Klicke auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino hochzuladen.
- Drücke den Joystick nach links/rechts/oben/unten oder in eine beliebige Richtung.
- Sieh dir das Ergebnis im Serial Monitor an.
Liest analoge Werte und den Tastenstatus eines Joysticks
Schnelle Schritte

Wandelt einen analogen Wert in Befehle zum Bewegen nach links/rechts/oben/unten um
Schnelle Schritte
※ Notiz:
Dabei kann es pro Zeitpunkt null, einen oder zwei Befehle geben (z. B. UP und LEFT gleichzeitig).
Wandelt analoge Werte in Winkel um, um zwei Servomotoren zu steuern
Das Detail wird im Tutorial Arduino - Joystick controls Servo Motor vorgestellt.
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.