KY-023 Joystick Modul (XY-Achsen): Unterschied zwischen den Versionen

Aus Linkerkit.de

Wechseln zu: Navigation, Suche
(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

Bild

ky-023.jpg

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


KY-023 VoltDivide.JPG

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

5 JoyStick.png

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);
}