Inhaltsverzeichnis
Für dieses Projekt benötigst du
Das Joystick Shield v1.A am Arduino verwenden
Inbetriebnahme
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:
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.
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
SCLK | Serial Clock | Digital | D9 |
CSN | Chip Select (Active Low) | Digital | D10 |
D/C | Data / Command | Digital | D11 |
RST | RESET | Digital | D12 |
SCE | Chip Enable (Active Low) | Digital | D13 |
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 bis zu 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.