Interaktives Joystick-Spiel mit Arduino & LED-Feedback
Benötigte Komponenten
| Steckbrett | × | 1 |
| Jumper-Wires | × | 1 |
| LED (generic) | × | 1 |
| Arduino UNO | × | 1 |
| USB-A auf B Kabel | × | 1 |
| Analoger Joystick (Generic) | × | 1 |
Projektbeschreibung
Ein generischer analoger Joystick (zwei Potentiometer für X/Y, oft mit Taster) wird vom Arduino ausgelesen. Je nach Ausschlagrichtung leuchtet eine von 4 LEDs (oben, unten, links, rechts). Der Joystick-Taster steuert eine 5. LED.
Verkabelung
- Joystick VRx → A0
- Joystick VRy → A1
- Joystick SW (Taster) → Digital Pin 2 (mit internem Pullup)
- LED Links → Pin 10
- LED Rechts → Pin 11
- LED Oben → Pin 9
- LED Unten → Pin 8
- LED Taster → Pin 7
Code
#define joyX A0
#define joyY A1
int button = 2;
void setup() {
pinMode(7, OUTPUT); // Taster-LED
pinMode(button, INPUT_PULLUP);
Serial.begin(9600);
pinMode(8, OUTPUT); // Unten
pinMode(9, OUTPUT); // Oben
pinMode(10, OUTPUT); // Links
pinMode(11, OUTPUT); // Rechts
}
void loop() {
int xValue = analogRead(joyX);
int yValue = analogRead(joyY);
Serial.print(xValue);
Serial.print("\t");
Serial.println(yValue);
int buttonState = digitalRead(button);
Serial.println(buttonState);
// X/Y Werte: 0..1023, Mitte ~512. Schwellen: <10 (min), >1020 (max), ~500 (Mitte)
if (xValue >= 500 && yValue <= 10) digitalWrite(10, HIGH); else digitalWrite(10, LOW); // Links
if (xValue <= 10 && yValue >= 500) digitalWrite(11, HIGH); else digitalWrite(11, LOW); // Rechts
if (xValue >= 1020 && yValue >= 500) digitalWrite(9, HIGH); else digitalWrite(9, LOW); // Oben
if (xValue >= 500 && yValue >= 1020) digitalWrite(8, HIGH); else digitalWrite(8, LOW); // Unten
if (xValue >= 1020 && yValue >= 1020) { // Ecke: beide aus
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}
// Taster (aktiv LOW durch Pullup)
if (buttonState == LOW) {
digitalWrite(7, HIGH);
Serial.println("Switch = High");
} else {
digitalWrite(7, LOW);
}
delay(100);
}
Verbesserungspotenzial
- Hysterese / Entprellung für stabilere Erkennung
- Analoge Schwellenwerte kalibrierbar machen (Min/Max/Mitte per Serial einstellen)
- PWM für Helligkeitssteuerung proportional zum Ausschlag
- Mehr LEDs oder WS2812-Strip für visuelle Effekte
Schaltplan
Siehe Bild: Joystick an A0/A1/D2, 5 LEDs an D7–D11 mit Vorwiderständen (nicht im Code, aber nötig!).
Herstellungsprozess
- Schach: Von antiken Ursprüngen zur modernen Fertigung – Ein Expertenüberblick
- Flipper: Geschichte, Design und Fertigung eines klassischen Arcade-Spiels
- Der Fußball: Von antiken Spielen zur modernen Innovation
- Die Evolution und Handwerkskunst des American Football: Von antiken Spielen zu modernen NFL-Standards
- Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
- UFO Attack: Eigenes Arduino-Spiel mit MAX7219 Matrix & Joystick
- 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
- 3D RGB Arduclock – Bluetooth-LED-Uhr mit Echtzeituhr
- River Health Monitor: Arduino-basiertes Wasserqualitäts-Messsystem
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung