Tetris mit Arduino

Bei diesem Projekt ging es um das Spiel Tetris auf einer RGB-Matrix mit Hilfe des Arduino Uno.

Durch die Ansteuerung des Mikrocontrollers Arduino Uno, den Programmcode und einen ebenfalls angeschlossenen Joystick sollte es möglich gemacht werden, Tetris auf der Matrix spielen zu können.

Dafür habe ich zwei 8x8 Rot-Grün-Blau Matrizen parallelgeschalten, um so eine vergrößerte 8x16 Matrix zu erhalten. Für diese habe ich mit einem 3D Drucker eine Halterung gedruckt, sodass die Matrix gut steht und man beim Spielen einen besseren Blick hat.

Zudem benötigte ich für mein Projekt einen Joystick mit dem man die einzelnen Bausteine nach links, recht und schneller nach unten bewegen kann, sowie die Bausteine selbst im Uhrzeigersinn um die eigene Achse drehen zu können. Das Spiel an sich funkioniert daher wie das gewöhnliche Tetris, nur die große Herausforderung lag darin, den Programmcode zu programmieren.

Funktionsweise der RGB-Matrix

Der Trick bei einer RGB-Matrix besteht darin, dass jeweils immer nur eine Spalte wirklich leuchtet. Die anderen sind jeweils ausgeschaltet. Wird nun in schneller Folge jede Spalte einmal angeschaltet, so entsteht aufgrund der Trägheit des menschlichen Auges ein scheinbar vollständiges Bild, bei dem alle angesteuerten LEDs gleichzeitig leuchten. Wird dieser Zyklus schnell genug durchlaufen, ist das Bild bei ruhigem Auge weitgehend flimmerfrei, was ab ca. 100Hz erreicht wird. In Ausnahmefällen kann jedoch eine stark bewegte LED-Matrix auch bei höheren Frequenzen als 100Hz noch flimmernd erscheinen, z.B. LED-Bremsleuchten, LED-Anzeigen an Zügen oder Straßenbahnen. 

Ausschnitt aus dem Programmcode

Hier bei diesen beiden Beispielen, habe ich die Bausteine des Spiels erstellt, die von ,,oben" runterfallen. Zu beginn muss man eine Art Fläche festlegen, diese ist beim Beispiel vom umgedrehten ,,T" zweizeilig mit jeweils drei Blöcken in der Länge. Danach muss man nur noch festlegen welcher dieser kleinen Blöcke ausgefüllt werden muss. Dafür ist 1 (high) ausgefüllt und 2 (low) für nicht ausgefüllt. Dieses Prinzip wurde für die anderen Bausteine ebenso angewendet, sodass ich schlussendlich insgesamt sieben Bausteine für das Spiel kreiert habe und sie auf der Matrix so aussehen:

Programmcode

Laborbericht