Joystick mit Arduino auslesen
In dieser Anleitung zeigen wir Ihnen, wie Sie einen Joystick mit einem Arduino UNO kompatiblen Board auslesen können.
Mit Joysticks bringen Sie Ihre 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);
}