Änderungen

KY-023 Joystick Modul (XY-Achsen)

1.808 Byte hinzugefügt, 10:51, 5. Apr. 2016
==Bild==
[[Datei:ky-023.jpg|358x358px|none|358x358px]]
==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
 
 
{| style="height: 567px;" width="847"
|-
||
[[Datei:KY-023_VoltDivide.JPG|none|516x552px]]
 
||
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==
[[Datei:5_JoyStick4_Joystick.png|none|450x235px]]
==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. <pre class="brush:cpp">// Module KY023// For more info see http://tkkrlab.nl/wiki/Arduino_KY-023_XYDeklaration und Initialisierung der Eingang-axis_joystick_modulePinsint JoyStick_X = A0; // xX-Achse-Signalint JoyStick_Y = A1; // yY-Achse-Signalint JoyStick_Z Button = 3; // keyKnopf 
void setup ()
{
pinMode (JoyStick_X, INPUT);
pinMode (JoyStick_Y, INPUT);
pinMode (JoyStick_ZButton, 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 ()
{
int float x, y, z; 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); z Knopf = digitalRead (JoyStick_ZButton); //... und an dieser Stelle ausgegeben Serial.print ("X-Achse:"); Serial.print (x, DEC4); Serial.print ("V,"); Serial.print ("Y-Achse:"); Serial.print (y, DEC4); Serial.print ("V, "); Serial.print (",Knopf:");  if(Knopf==1) { Serial.println (z, DEC" nicht gedrueckt"); } else { Serial.println (" gedrueckt"); } delay (100200);
}
</pre>
Bürokrat, Administrator
611
Bearbeitungen