Joystick mit Arduino auslesen
In dieser Anleitung zeigen wir, wie ein Joystick mit einem Arduino UNO kompatiblen Board ausgelesen werden kann.
Mit Joysticks bringst du deine Projekte unter analoge Kontrolle! Dieses Joystick Modul eignet sich perfekt für eine 2-Achsen-Steuerung wie sie häufig in Roboterarmen verwendet wird. Das Modul macht sich ebenfalls super als Eingabemethode für Spiele und Menüs.
Dieses Joystick Modul besitzt 5 Pins: GND, 5V, VRx, VRy und SW. Die Beschriftung kann je nach Charge variieren, die Belegung und Funktion bleibt aber die gleiche. Der Joystick arbeitet analog und liefert genauere Werte als digitale Joysticks. Er verfügt über einen integrierten Taster, der durch Drücken ausgelöst werden kann. Dadurch lassen sich z.B. Umschaltfunktionen (Toggle) oder Auswahlfunktionen (Select) programmieren.
Benötigte Komponenten:
- Arduino UNO R3 kompatibles Board
- Joystick Modul
- 5 Buchse-Stecker Kabel
Funktionsweise
Am Arduino werden die Daten der X- und Y-Pins über analoge Eingänge gelesen. Das Joystick Modul besitzt jeweils ein Potentiometer für die X- und Y-Achse. Je nach Position des Joysticks wird eine andere Ausgangsspannung an unseren Arduino gegeben. Das Arduino Board wandelt die analoge Spannung zwischen 0 bis 5V in Werte von 0 bis 1023 um. Der Taster liefert permanent 2V, bei Betätigung wird er mit GND verbunden. Im seriellen Monitor lesen wir 1 im Ruhezustand und 0 beim Auslösen.
Schaltplan
| Joystick | Arduino |
| GND | Ground |
| +5V | 5V |
| VRx | Analoger Pin A0 |
| VRy | Analoger Pin A1 |
| SW | Digitaler Pin2 |
Code für Arduino
Code anzeigen / einklappen
const int SW_pin = 2; // Taster-Pin
const int X_pin = A0; // X-Ausgang
const int Y_pin = A1; // Y-Ausgang
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(9600);
}
void loop() {
Serial.print("Taster: ");
Serial.print(digitalRead(SW_pin));
Serial.print("\n");
Serial.print("X-Achse: ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Y-Achse: ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");
delay(500);
}
Mit dem seriellen Monitor können die aktuellen Werte ausgelesen werden.
Wenn der Joystick im Mittelpunkt (Ruheposition) steht, sollte er einen Wert von ca. 512 ausgeben. Wenn eine Achse bewegt wird, ändert sich der Wert von 0 bis 1023