In diesem Tutorial zeige ich, wie man mit einem Joystick ganz einfach mittels des Raspberry Pi’s auf seinen MAX7219 LED Matrizen das Retro Spiel Pong spielen kann. Dazu gibt es noch ein kleines Demo Video, welches vielleicht auf den Geschmack bringt 😉
Zubehör
- quadratische Matrizen (alternativ hier oder hier. ideal sind 9 oder mehr)
- Joystick (analog)
- MCP3008 IC (Analog-Digital Wandler)
- Breadboard
- Male – Female Jumper Kabel
- einen 10kΩ Widerstand
Aufbau
Den Aufbau der Matrizen zeige ich bereits hier, den Aufbau des Joysticks wiederum hier.
Du solltest beide Tutorials durchlaufen haben, bevor du weiter gehst.
Die Pin Belegung des Raspberrys sieht folgendermaßen aus:
RaspberryPi | MCP3008 | MAX7219 |
---|---|---|
Pin 2 (5V) | — | VCC |
Pin 1 (3.3V) | Pin 16 (VDD) | — |
Pin 1 (3.3V) | Pin 15 (VREF) | — |
Pin 6 (GND) | Pin 14 (AGND) | GND |
Pin 23 (SCLK) | Pin 13 (CLK) | CLK |
Pin 21 (MISO) | Pin 12 (DOUT) | — |
Pin 19 (MOSI) | Pin 11 (DIN) | DIN |
Pin 24 (CE0) | — | CS |
Pin 26 (CE1) | Pin 10 (CS/SHDN) | — |
Pin 6 (GND) | Pin 9 (DGND) | — |
Jene Pinsignale, die an beide Module angeschlossen werden, kannst du z.B. mit Hilfe eines Breadboards „verdoppeln“ (dies betrifft GND, MOSI und SCLK).
Vom MCP3008 Baustein müssen die Verbindungen noch zum Joystick gehen. Wenn du dies bereit im vorherigen Tutorial gemacht hast, kannst du weiter zum nächsten Schritt (die Belegung ist identisch).
RPi/MCP3008 | Joystick |
---|---|
Raspberry Pin 6 (GND) | GND |
Raspberry Pin 1 (3.3V) | +5V |
Pin 1 (CH0) | SW |
Pin 3 (CH2) | VRy |
Software
Der Einfachheit halber habe ich ein GitHub Repository mit den Skripten erstellt. Dies enthält u.a. auch die Bibliothek für die MAX7219 Matrizen und ist direkt lauffähig.
sudo git clone https://github.com/tutRPi/Pong-Game-MAX7219 && cd Pong-Game-MAX7219
(git muss natürlich installiert sein)
Solltest du nicht 3×3 Matrizen verwenden, musst du dies in der multilineMAX7219.py mittels
sudo nano multilineMAX7219.py
verändern (Zeile 113/114).
Nun sollte alles bereit sein. Du kannst es nun starten:
sudo python pong.py
Sollte dir das Spiel zu schwerr oder zu einfach erscheinen, kannst du dies in der pong.py
Datei verändern (Zeile 56: eine Zahl zwischen 0 und 1, wobei ich einen Wert um 0.8 empfehle). In der Datei kannst du auch noch andere Parameter, wie die Höhe des Boardes oder die Geschwindigkeit verstellen.
Demo Video
Hier habe ich noch ein kleines Demo Video gemacht.
21 Kommentare
Könnte man das auch mit 2 Joysticks als Multiplayer machen ?
Na klar, da spricht nichts dagegen.
Habe vor im Zuge eines Schul-Projekts das Pong Spiel mittels Java zu realisieren ( Phyton sollen wir nicht nutzen) ….hast du zufällig ein paar Tipps für mich wie ich das umsetzen kann? Sollte doch auch machbar sein, oder?
Je nachdem wie sicher du im Java Programmieren bist, sollte das kein Problem sein. Als Tipp, hier eine Java GPIO Bibliothek: http://pi4j.com/
Danke für die Bibliothek, werde sie mir mal anschauen.
Naja noch nicht so sicher, mache das noch nicht so lange 😉
daher die Frage ob du ein paar Tipps hast (ob du Ahnung von Java hast und eventuell bei weiteren Fragen weiter helfen kannst).
Ahnung von Java habe ich, allerdings bisher kein Raspberry Pi Projekt mit Java umgesetzt.
Hi,
Habe dein Projekt soweit umgesetzt, allerdings habe ich noch einen Fehler.
Das Spiel Pong läuft irgendwie im Hintergrund, also er sagt mir nach einiger Zeit ob ich gewonnen oder verloren habe.
Aber bei mir leuchten alle LED’s und das Spiel wird nicht angezeigt.
Hast du eine Idee woran das liegt ? und wen wie löse ich es ^^
Klingt danach, als ob es nicht richtig verbunden ist. Funktioniert die Demo Anzeige der Bibliothek wie im Video?
in wie fern nicht richtig verbunden was falsch gelötet oder falsch gesteckt,
welche demo anzeige ?
Ja, alles davon könnte die Ursache sein.
Die Demo hier: Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED Matrizen
ok habe eben mal schnell getestet
python multilineMAX7219_demo.py
geht und die es wird angezeigt
so hab jetzt noch mal getestet und jetzt ist es so das in den ersten beiden 8×8 Feldern das spiel teilweise angezeigt wird und die anderen 8×8 Felder leuchten noch komplett.
Die Anzahl der Matrizen hast du aber angepasst oder?
ja habe ich
Hm, das klingt komisch. Versuch mal mit den Funktionen der Bibliothek (Version im Pong Verzeichnis) bestimmte Pixel der anderen Matrizen zu setzen. Wenn das geht, liegt es wohl dochh nicht an der Verbindung bzw. den Einstellungen.
Cool. Wieviele dieser 8×8 MAX7219 kann man denn rein theoretisch verwenden?
Ich denke da an 4 x 16 MAX7219’s. Nicht fuer Pong, sondern eher eine LED-Uhr.
Sollte kein Problem sein, solange genügend Strom vorhanden ist.
Hallo,
Ich habe das Projekt nach gebaut hat auch alles so weit funktioniert allerdings sobald ich das Programm starten will bekomme ich einen SyntaxError aufgrund der Zeile 159 in pong.py und ich weis nicht wie ich das beheben kann.
Welches Betriebssystem benutzt du?
hey, ich bau gerade etwas ähnliches und ich muss wissen, wie ich joystick und matrizen ansteuere, bzw wie ich die CE0 und CE1 bedienen kann. Kannst du mir helfen?
Schau mal hier: Joystick am Raspberry Pi benutzen