Nr. 24 – Joystick Modul V1.A

Aufgabe 24 : Das Joystick Modul V1.A in Betrieb nehmen

Material : Arduino, Joystick Modul V1.A (Materialbeschaffung www.funduinoshop.com)

 

In dieser Aufgabe möchten wir uns die Position des im V1.A Modul integrierten Joysticks, sowie die Betätigung der sechs Taster „A,B,C,D,E,F“ im seriellen Monitor anzeigen lassen.

Die Installation des Joystick Moduls mit dem Arduino ist relativ simpel.
Das Joystick Modul ist ein Shield, welches auf den Arduino aufgesteckt wird und unmittelbar betriebsbereit ist.
Es verfügt darüber hinaus über einen Schalter, mit welchem man zwischen einer 3,3V oder einer 5V Spannung variieren kann.

Wenn man die 5V Spannung des Arduinos für das Shield verwendet, definiert der Joystick die Lage durch die Zahlenreichweite 0-1024(1023). Nutzt man allerdings die 3,3V Spannung , definiert der Joystick die Lage durch die Zahlenreichweite 0-692.
Dies gilt sowohl für die X, als auch für die Y-Achse.

Bei anliegender 5V Spannung lassen sich folgende Zahlenwerte ablesen :

Der Sketch :

 

const byte KnopfA = 2;     // Die Variablen werden deklariert
const byte KnopfB = 3;     // Wir verwenden die Deklaration "const byte", da die einzelnen Knöpfe konstant ("const") mit den jeweiligen Pins verbunden werden
const byte KnopfC = 4;
const byte KnopfD = 5;
const byte KnopfE = 6;
const byte KnopfF = 7;

const byte PinJoystickX = 0;
const byte PinJoystickY = 1;


boolean Agedruckt = false;  // Festlegung der Variablen in den Grundzustand "false" - der entsprechende Taster ist um Grundzustand nicht betätigt
boolean Bgedruckt = false;
boolean Cgedruckt = false;
boolean Dgedruckt = false;
boolean Egedruckt = false;
boolean Fgedruckt = false;



void setup() // Hier beginnt das Setup

{  
  Serial.begin(9600);

      pinMode(KnopfA, INPUT);   // Knopf A dient nun als Eingang und ...
      digitalWrite(KnopfA, HIGH);  // ... wird in den Status "HIGH" versetzt
      
      pinMode(KnopfB, INPUT);
      digitalWrite(KnopfB, HIGH);
      
      pinMode(KnopfC, INPUT);
      digitalWrite(KnopfC, HIGH);
      
      pinMode(KnopfD, INPUT);
      digitalWrite(KnopfD, HIGH);
      
      pinMode(KnopfE, INPUT);
      digitalWrite(KnopfE, HIGH);
      
      pinMode(KnopfF, INPUT);
      digitalWrite(KnopfF, HIGH);
}

void loop() // Hier beginnt die Schleife
{
      if(Agedruckt == digitalRead(KnopfA))  // Wenn der Taster gedrückt wird...  (Auslesen durch den Befehl "digitalRead()")
      
          {
          Serial.print("Taster A betaetigt"); // ...soll "Taster A betaetigt" ausgegeben werden
          Serial.println();
          }
          
      if(Bgedruckt == digitalRead(KnopfB))
      
          {
          Serial.print("Taster B betaetigt");
          Serial.println();
          }
          
      if(Cgedruckt == digitalRead(KnopfC))
      
          {
          Serial.print("Taster C betaetigt");
          Serial.println();
          }
          
      if(Dgedruckt == digitalRead(KnopfD))
      
          {
          Serial.print("Taster D betaetigt");
          Serial.println();
          }
          
      if(Egedruckt == digitalRead(KnopfE))
      
          {
          Serial.print("Taster E betaetigt");
          Serial.println();
          }
          
      if(Fgedruckt == digitalRead(KnopfF))
      
          {
          Serial.print("Taster F betaetigt");
          Serial.println();
          }


      // Nun folgt das Auslesen der Position des Joysticks
      
       

          JoystickX = analogRead(PinJoystickX);    // Die Variable JoystickX dient als Speicher für den Wert der X-Achse 
          Serial.print("Wert auf der X-Achse des Joysticks betraegt    "); 
          Serial.println(JoystickX); 

          JoystickY = analogRead(PinJoystickY);    // Die Variable JoystickY dient als Speicher für den Wert der Y-Achse
          Serial.print("Wert auf der Y-Achse des Joysticks betraegt    ");
          Serial.println(JoystickY);


Serial.println();   // Einfügen von Leerzeilen, damit die ausgegebenen Zahlenwerte klar zu lesen sind
Serial.println();

delay(1000);  // Die Werte (bzw. die Betätigung der Taster) sollen mit einem Delay von 1000ms (1 Sekunde) ausgegeben werden
}