Benötigte Komponenten
- Arduino UNO R3 kompatibles Board
- Joystick Modul
- 5 Buchse-Stecker Kabel
Beschreibung
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.
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
Anschlussplan
Joystick | Arduino |
GND | Ground |
+5V | 5V |
VRx | Analoger Pin A0 |
VRy | Analoger Pin A1 |
SW | Digitaler Pin 2 |
Code für Arduino
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 Sie die aktuellen Werte auslesen. Wenn der Joystick im Mittelpunkt (Ruheposition) steht, sollte er einen Wert von ca. 512 ausgeben. Wenn Sie eine Achse bewegen, ändert sich der Wert von 0 bis 1023