Nr. 24 – Joystick Modul V1.A

Inhaltsverzeichnis

Das Joystick Shield v1.A am Arduino verwenden

Inbetriebnahme

Nahaufnahme des Joystick Moduls v1.A

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 dem 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:

Zahlenwerte des analogen Joysticks

Aufgabenstellung

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. Das Ergebnis ist auf dem Bild rechts zu erkennen.

Ausgabe des seriellen Monitors bei Verwendung des Joystick Moduls

Pinbelegung

Die Pinbelegung des Moduls sieht folgendermaßen aus:

  • A = Taster A – Pin Digital D2
  • B = Taster B – Digital D3
  • C = Taster C – Digital D4
  • D = Taster D – Digital D5
  • E = Taster E – Digital D6
  • F = Taster F – Digital D7
  • K = Joystick Taste K (Joystick von oben drücken) – Digital D8
  • X = Joystick x-Axis – Analog A0
  • Y = Joystick x-Axis – Analog A1

Fortgeschrittene Arduino-Anwender können darüber hinaus über das Shield auch Bluetooth und I2C werdenden. Die Pinbelegung sieht dabei so aus:

I2C:

  • SDA = A4,
  • SCL = A5,
  • 5V und GND an die jeweiligen Pins

Bluetooth:

  • + = 3,3 V
  • – = GND,
  • R = Pin 1 mit 1 kOhm Widerstand, (Tx) und GND
  • T an Pin 0 (Rx)

Als Nächstes folgt ein Sketch, der die Eingaben am Shield am seriellen Monitor darstellt.

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 KnopfK = 8;

const byte PinJoystickX = 0;
const byte PinJoystickY = 1;
int JoystickX;
int JoystickY;


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;
boolean Kgedruckt = 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();
          }
          
      if(Kgedruckt == digitalRead(KnopfK))
      
          {
          Serial.print("Joystick-Taster K 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
}

Pinbelegung von zusätzlichen Erweiterungsmodulen

Nokia LCD Pinbelegung

SCLKSerial ClockDigitalD9
CSNChip Select (Active Low)DigitalD10
D/CData / CommandDigitalD11
RSTRESETDigitalD12
SCEChip Enable (Active Low)DigitalD13

NRF24L01 Pinbelegung

SCE Chip Enable (RX TX Mode Select) Digital D9
CSN Chip Select (Active Low) Digital D10
SCK Serial Clock Digital D13
MOSI Master Out Slave In Digital D11
MISO Master In Slave Out Digital D12

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE