KY-023 Joystick Modul (XY-Achsen): Unterschied zwischen den Versionen
Aus Linkerkit.de
(→Pin-Belegung) |
(→Codebeispiel Arduino) |
||
Zeile 6: | Zeile 6: | ||
In diesem Joystick wurde für die X-Achse, sowie für die Y-Achse, ein eigenes Potentiometer verbaut. Diese ergeben einen Spannungsteiler, wie dieser im folgendem Bild aufgezeigt wird | In diesem Joystick wurde für die X-Achse, sowie für die Y-Achse, ein eigenes Potentiometer verbaut. Diese ergeben einen Spannungsteiler, wie dieser im folgendem Bild aufgezeigt wird | ||
+ | |||
Version vom 5. April 2016, 13:14 Uhr
Inhaltsverzeichnis
Bild
Technische Daten / Kurzbeschreibung
X und Y Position des Joysticks, werden als analoge Spannung auf den Ausgangspins ausgegeben.
In diesem Joystick wurde für die X-Achse, sowie für die Y-Achse, ein eigenes Potentiometer verbaut. Diese ergeben einen Spannungsteiler, wie dieser im folgendem Bild aufgezeigt wird
Im Ruhezustand befindet sich das Potentiometer in der Mitte, so dass Widerstand1=Widerstand2, womit auch die angelegte Spannung sich gleichmäßig auf beide verteilt - z.B Messwert Bei +V=5V -> 2.5V. Wird jetzt die Position von der z.B. X-Achse verändert, so ändern sich die jeweiligen Widerstände abhängig zur aktuellen Position - z.B. geht es in die eine Richtung so wird Widerstand 1 kleiner und Widerstand 2 größer, geht es in die andere Richtung, so wird dann Widerstand 1 größer und Widerstand 2 kleiner. Je nachdem wie sich die Widerstände untereinander aufteilen, resultiert dieses in einen jeweiligen Spannungswert, den man zwischen den Widerständen (beim Potentiometer sog. Schleifer) messen und somit die Position der Achse bestimmen kann. |
Pin-Belegung
Codebeispiel Arduino
Das Programm liest die aktuellen Werte der Eingang-Pins, konvertiert diese in eine Spannung (0-1023 -> 0V-5V) und gibt diese auf der seriellen Ausgabe aus.
// Deklaration und Initialisierung der Eingang-Pins int JoyStick_X = A0; // X-Achse-Signal int JoyStick_Y = A1; // Y-Achse-Signal int Button = 3; // Knopf void setup () { pinMode (JoyStick_X, INPUT); pinMode (JoyStick_Y, INPUT); pinMode (Button, INPUT); // Da der Knopf das Signal beim druecken auf Masse zieht, // schalten wir hiermit den PullUp-Widerstand ein digitalWrite(Button, HIGH); Serial.begin (9600); // Serielle Ausgabe mit 9600 bps } // Das Programm liest die aktuellen Werte der Eingang-Pins // und gibt diese auf der seriellen Ausgabe aus void loop () { float x, y; int Knopf; //Aktuelle Werte werden ausgelesen, auf den Spannungswert konvertiert... x = analogRead (JoyStick_X) * (5.0 / 1023.0); y = analogRead (JoyStick_Y) * (5.0 / 1023.0); Knopf = digitalRead (Button); //... und an dieser Stelle ausgegeben Serial.print ("X-Achse:"); Serial.print (x, 4); Serial.print ("V, "); Serial.print ("Y-Achse:"); Serial.print (y, 4); Serial.print ("V, "); Serial.print ("Knopf:"); if(Knopf==1) { Serial.println (" nicht gedrueckt"); } else { Serial.println (" gedrueckt"); } delay (200); }