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