
Wird der Joystick in der vertikalen X‑Achse nach vorne bewegt, wird die rote LED mithilfe der ⇒Pulsweitenmodulation langsam heller.
Die Bewegung des Joysticks auf der X‑Achse verringert die Helligkeit der roten LED. Die Bewegung der horizontalen Y‑Achse nach rechts sorgt dafür, dass die grüne LED heller wird, die Bewegung nach links verdunkelt die grüne LED.
Ein Druck auf den Knopf schaltet beide LEDs aus.
So sieht es aus:


Der Joystick besteht aus zwei Potentiometern, jeweils einer für die X‑Achse und einer für die Y‑Achse. Beide lesen bei den Bewegungen des Joysticks die Spannung an den verwendeten analogen Pins. Diese Spannung wird in einem digital-analog-Wandler in Werte zwischen 0 und 1023 umgewandelt.

Die Werte können je nach Joystick leicht nach oben oder unten abweichen.
Die Beschriftung und die Reihenfolge der Pins können sich je nach Joystick unterscheiden.
| Achse | Bezeichnung | Anschluss |
|---|---|---|
| X‑Achse | VRx/VER | A0 |
| Y‑Achse | VRy/HOR | A1 |
| Button | SW/SEL | 7 |
Benötigte Bauteile:
- 2 LEDs
- 2 Widerstände 220 Ω
- Joystick
- Leitungsdrähte

Beachte die ⇒Vorwiderstände verschiedener LEDs
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Definiere zunächst die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // PWM-Pins int GRUEN = 5; int ROT = 6; // Button/Knopf int JoystickButton = 7; // analoge Pins int XAchse = A0; int YAchse = A1; // Variablen für die Auswertung der Bewegung des Joysticks int PositionX; int PositionY; // Leuchstärke der LEDs (0–255) int LeuchtStaerkeRot; int LeuchtStaerkeGruen; // Zustand des Buttons int ButtonLesen; |
Im setup-Teil wird neben den LEDs auch der pinMode des Buttons definiert:
1 2 3 4 5 6 | void setup() { pinMode(ROT, OUTPUT); pinMode(GRUEN, OUTPUT); pinMode(JoystickButton, INPUT_PULLUP); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | void loop() { // Bewegung der X‑Achse lesen PositionX = analogRead(XAchse); // Bewegung X‑Achse nach oben if (PositionX > 600) { // bei der PWM darf die Leuchstärke 255 nicht übersteigen if (LeuchtStaerkeRot < 255) { // Helligkeit um 1 erhöhen LeuchtStaerkeRot = LeuchtStaerkeRot + 1; // rote LED einschalten analogWrite(ROT, LeuchtStaerkeRot); delay(20); } Serial.println(“Helligkeit rote LED: ” + String(LeuchtStaerkeRot)); Serial.println(“Helligkeit grüne LED: ” + String(LeuchtStaerkeGruen)); } // Bewegung X‑Achse nach unten if (PositionX < 300) { // solange die Helligkeit > 0 // -> Helligkeit um 1 verringern if (LeuchtStaerkeRot > 0) { LeuchtStaerkeRot = LeuchtStaerkeRot - 1; analogWrite(ROT, LeuchtStaerkeRot); delay(20); } Serial.println(“Helligkeit rote LED: ” + String(LeuchtStaerkeRot)); Serial.println(“Helligkeit grüne LED: ” + String(LeuchtStaerkeGruen)); } // Bewegung der Y‑Achse lesen PositionY = analogRead(YAchse); // Bewegung Y‑Achse nach rechts if (PositionY > 600) { if (LeuchtStaerkeGruen > 0) { LeuchtStaerkeGruen = LeuchtStaerkeGruen - 1; analogWrite (GRUEN, LeuchtStaerkeGruen); delay(20); } Serial.println(“Helligkeit rote LED: ” + String(LeuchtStaerkeRot)); Serial.println(“Helligkeit grüne LED: ” + String(LeuchtStaerkeGruen)); } // Bewegung Y‑Achse nach links if (PositionY < 300) { if (LeuchtStaerkeGruen < 255) { LeuchtStaerkeGruen = LeuchtStaerkeGruen + 1; analogWrite(GRUEN, LeuchtStaerkeGruen); delay(20); } Serial.println(“Helligkeit rote LED: ” + String(LeuchtStaerkeRot)); Serial.println(“Helligkeit grüne LED: ” + String(LeuchtStaerkeGruen)); } // Button/Knopf auswerten ButtonLesen = digitalRead(JoystickButton); if (ButtonLesen == LOW) { // Helligkeit der LEDs auf 0 setzen und LEDs ausschalten LeuchtStaerkeGruen = 0; LeuchtStaerkeRot = 0; analogWrite(ROT, 0); analogWrite(GRUEN, 0); } } |
Verwandte Anleitungen:
Letzte Aktualisierung:






