
Auf einer LED-Matrix wird eine wählbare Anzahl von leuchtenden LEDs zufällig auf der LED-Matrix verteilt.
Ein Joystick bewegt eine leuchtende LED über das “Spielfeld”, und “löscht” alle LEDs, die sich auf der jeweiligen Position befinden.
So sieht es aus (um den Film kurz zu halten, wurden nur fünf LEDs für den Parcours verwendet):

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 die Spannung und liefern dem Arduino jeweils einen analogen Wert, der zwischen 0 und 1023 liegt.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 die Spannung und liefern dem Arduino jeweils einen analogen Wert, der zwischen 0 und 1023 liegt.

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 |
Die einzelnen LEDs der LED-Matrix werden in Reihen und Spalten angesprochen.
Die Schreibweise für jede Reihe kann binär angegeben werden: 0 = aus, 1 = an. Den Werten wird ein “B” vorangestellt.
Die LED-Matrix wurde in das Steckbrett eingesetzt, daher verlaufen die Reihen vertikal und die Spalten horizontal.

Beispiel:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | void PfeilUnten() { // Array für die 8 Reihen byte Zeichen[8] = { B00010000, // 1. Reihe B00110000, // 2. Reihe B01111111, // 3. Reihe B11111111, // 4. Reihe B01111111, // 5. Reihe B00110000, // 6. Reihe B00010000, // 7. Reihe B00000000 // 8. Reihe }; // Matrix anzeigen for (int i = 0; i < 8; i++) { LEDMatrix.setRow(0, i, Zeichen[i]); } } |

Schließe die LED-Matrix an.

Pinbelegung LED-Matrix
Benötigte Bauteile:
- LED-Matrix
- Joystick
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Als Erstes musst du Bibliotheken installieren:
![]() | ![]() |
oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Jedem Befehl muss der Name der Matrix mit abschließendem . vorangestellt werden.
Funktionen der Bibliothek LEDControl
| Schlüsselwort | Aktion |
|---|---|
| LedControl Name_der_Matrix(Data-In, CLK, CS, AnzahlMatrix) | LED-Matrix initialisieren: LedControl LEDMatrix = LedControl(12, 11, 10, 1); |
| shutDown(NummerMatrix, true/false) | Matrix aufwecken: shutDown(0, false); |
| setIntensity(NummerMatrix, Helligkeit) | Helligkeit setzen (0–20) setIntensity(0, 8); |
| clearDisplay(NummerMatrix) | clearDisplay(0); |
| setLed(NummerMatrix, Zeile, Spalte, true/false); | einzelne LED schalten setLed(0, 0, 0, true); |
| setRow(NummerMatrix, Zeile, Byte) | zeilenweise ein Byte schreiben: setRow(0, Zeile, B10000000); setRow kann Werte zwischen 0 und 7 haben ![]() Wenn die LED-Matrix in das Steckbrett gesetzt wird, verlaufen die Reihen vertikal. |
| setColumn(NummerMatrix, Spalte, Byte) | spaltenweise ein Byte schreiben: setColumn(0, Spalte, B10000000); setColumn kann Werte zwischen 0 und 7 haben ![]() Wenn die LED-Matrix in das Steckbrett gesetzt wird, verlaufen die Spalten horizontal. |
Im Kopf des Programms musst du die benötigte Bibliotheken einbinden und die Pinbelegung der LED-Matrix festlegen.
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 | #include “LedControl.h” #include “Bounce2.h” // Joystick-Button zuordnen Bounce ZeitStoppen = Bounce(); // Joystick analoge Pins int XAchse = A0; int YAchse = A1; // Joystick Knopf int JoystickButton = 7; // Variablen für die Auswertung der Bewegung des Joysticks int PositionX; int PositionY; // Startposition der LED int Reihe = 4; int Spalte = 4; // Anzahl zufälliger LEDs int AnzahlLED = 5; // Variablen der Zeit float StartZeit; float VerstricheneZeit; float Sekunden; // Variable für den Neustart bool Start = false; /* VCC -> 5V GND Pin 12 -> DATA IN-pin Pin 11 -> CLK-pin Pin 10 -> CS-pin */ LedControl LEDMatrix = LedControl(12, 11, 10, 1); |
Im setup-Teil wird die LED-Matrix gestartet und der pinMode des Taster und des Lautsprechers festgelegt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void setup() { Serial.begin(9600); ZeitStoppen.attach(JoystickButton); // Zufallsgenerator starten randomSeed(analogRead(5)); // Matrix “aufwecken” LEDMatrix.shutdown(0, false); // mittlere Helligkeit setzen LEDMatrix.setIntensity(0, 2); PfeilUnten(); pinMode(JoystickButton, INPUT_PULLUP); // Start-LED setzen LEDMatrix.setLed(0, Reihe, Spalte, true); // Zeit starten StartZeit = millis(); } |
Erstelle Funktionen für den „Bau“ des Parcours und für die Darstellung des Pfeils:
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 | void ParcoursBauen() { LEDMatrix.clearDisplay(0); int Minimum = 0; int Maximum = 7; for (int i = 0; i < AnzahlLED; i++) { int Spalte = random(Minimum, Maximum); int Zeile = random(Minimum, Maximum); LEDMatrix.setLed(0, Spalte, Zeile, true); } } void PfeilUnten() { byte Zeichen[8] = { B00010000, // 1. Reihe B00110000, // 2. Reihe B01111111, // 3. Reihe B11111111, // 4. Reihe B01111111, // 5. Reihe B00110000, // 6. Reihe B00010000, // 7. Reihe B00000000 // 8. Reihe }; // Matrix anzeigen for (int i = 0; i < 8; i++) { LEDMatrix.setRow(0, i, Zeichen[i]); } } |
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | void loop() { // Start if (Start) { ParcoursBauen(); Start = false; StartZeit = millis(); int Reihe = 4; int Spalte = 4; LEDMatrix.setLed(0, Reihe, Spalte, true); } // Joystick-Button lesen if (ZeitStoppen.update()) { if (ZeitStoppen.read() == LOW) { Start = true; // Zeit berechnen float Sekunden; VerstricheneZeit = millis() - StartZeit; Sekunden = VerstricheneZeit / 1000; String GesamtSekunden = String(Sekunden); // . durch , ersetzen GesamtSekunden.replace(“.”, “,”); // Ausgabe im Seriellen Monitor Serial.println(“Sekunden insgesamt: ” + GesamtSekunden + ” Sekunden”); // Minuten berechnen int Minute = int(Sekunden) / 60; // nur Ausgabe der Minuten wenn Minute > 0 if (Minute > 0) { // Ausgabe verschönern, wenn Minute > 1 -> Ausgabe “Minuten” // “Minute” if (Minute > 1) { Serial.print(String(Minute) + ” Minuten ”); } else { Serial.print(String(Minute) + ” Minute ”); } } // von Sekunden Anzahl der Minuten abziehen Sekunden = Sekunden - Minute * 60; // Sekunden in String umwandeln damit . durch , ersetzt werden kann String AnzahlSekunden = String(Sekunden); // . durch , ersetzen AnzahlSekunden.replace(“.”, “,”); Serial.println(AnzahlSekunden + ” Sekunden”); } } // Bewegung der X‑Achse lesen PositionX = analogRead(XAchse); // Bewegung X‑Achse nach oben if (PositionX > 600) { // zu schnelles “Springen” verhindern delay(200); LEDMatrix.setLed(0, Reihe, Spalte, false); if (Spalte > 0) Spalte–; LEDMatrix.setLed(0, Reihe, Spalte, true); } // Bewegung X‑Achse nach unten if (PositionX < 300) { delay(200); LEDMatrix.setLed(0, Reihe, Spalte, false); if (Spalte < 7) Spalte++; LEDMatrix.setLed(0, Reihe, Spalte, true); } // Bewegung der Y‑Achse lesen PositionY = analogRead(YAchse); // Bewegung Y‑Achse nach rechts if (PositionY > 600) { delay(200); LEDMatrix.setLed(0, Reihe, Spalte, false); if (Reihe > 0) Reihe–; LEDMatrix.setLed(0, Reihe, Spalte, true); } // Bewegung Y‑Achse nach links if (PositionY < 300) { delay(200); LEDMatrix.setLed(0, Reihe, Spalte, false); if (Reihe < 7) Reihe++; LEDMatrix.setLed(0, Reihe, Spalte, true); } } |
Verwandte Anleitungen:
Letzte Aktualisierung:










