Snake LED-Matrix
Der Spieleklassiker Snake einmal etwas anders: Dieses Projekt realisiert das bekannte Snake-Spiel auf einer selbstgebauten RGB-LED-Matrix.
Als Steuerung kommt ein ESP8266-Entwicklerboard vom Typ Wemos D1 mini zum Einsatz. Gespielt wird ganz klassisch mit vier Richtungstasten. Die Schlange bewegt sich über das Spielfeld, sammelt Äpfel ein und wird dabei mit jedem Treffer länger.
Damit es nicht ganz so vorhersehbar bleibt, sind im Spiel außerdem zwei Easter Eggs versteckt. Beide lassen sich über die vorhandenen Richtungstasten aktivieren – wie das funktioniert, wird an dieser Stelle allerdings noch nicht verraten. 😉
Schaltung und Steuerung
Die Steuerung des Spiels übernimmt ein Wemos D1 mini mit ESP8266. Die vier Richtungstaster für Hoch, Runter, Links und Rechts arbeiten gegen Masse. Für diese Eingänge werden die internen Pull-up-Widerstände des ESP8266 verwendet, sodass hierfür keine zusätzlichen Widerstände erforderlich sind.
Der separate Reset-Taster ist an D0 (GPIO16) angeschlossen und dient dazu, den gespeicherten Highscore zurückzusetzen. An diesem Eingang ist zusätzlich ein externer Pull-up-Widerstand vorgesehen. Im Programm ist zwar auch für diesen Eingang der interne Pull-up aktiviert, bei meinem Aufbau kam es ohne den zusätzlichen externen Widerstand jedoch zu Fehlfunktionen. Im Schaltbild ist hierfür ein Widerstand von 1 kΩ eingezeichnet. In der Praxis können hier Werte zwischen 1 kΩ und 10 kΩ verwendet werden.
Die gesamte Schaltung wird mit 12 V versorgt. Für den Wemos D1 mini ist im Schaltbild ein 7805 vorgesehen, der daraus 5 V erzeugt. In meinem tatsächlich aufgebauten Gerät fehlt dieser allerdings: Beim Bau war gerade kein passender Spannungsregler zur Hand, daher habe ich die Versorgung des D1 mini provisorisch mit einer in Reihe geschalteten 5,6-V-Z-Diode reduziert. Dadurch liegen am D1 mini ungefähr 6 V an. Der 7805 ist für einen Nachbau die vorgesehene Lösung.
Nicht im Schaltbild eingezeichnet ist die Beleuchtung der vier Richtungstaster. Sie wird einfach direkt aus der 12-V-Versorgung gespeist und hat mit der eigentlichen Tasterabfrage nichts zu tun.
Ebenfalls nicht eingezeichnet ist die optionale Soundausgabe. Wer das Spiel mit akustischen Signalen ergänzen möchte, kann mit D7 (GPIO13) einen Buzzer ansteuern.
Aufbau der LED-Matrix
Die Spielfläche besteht aus insgesamt 192 RGB-LEDs, die als Matrix mit 16 Spalten und 12 Reihen angeordnet sind. Die LEDs werden dabei nicht zeilenweise einzeln angesteuert, sondern bilden eine durchgehende Kette.
Der Datenweg verläuft schlangenförmig durch die Matrix. Die erste Reihe läuft von links nach rechts, die zweite von rechts nach links, die dritte wieder von links nach rechts und so weiter. Dieses Serpentinenprinzip setzt sich über alle zwölf Reihen fort.
Für die Matrix habe ich einzelne 12-V-WS2811-LED-Ketten verwendet. Der Grund dafür war ausgesprochen pragmatisch: Von genau diesen Ketten hatte ich noch unsagbar viele im Bestand. Also wurden sie kurzerhand für die Matrix verwurstet. 😉
Auf der Rückseite sieht das Ganze dadurch etwas wilder aus, als es elektrisch tatsächlich ist. Entscheidend ist lediglich, dass die Datenleitung dem eingezeichneten Weg folgt und der Ausgang einer Reihe jeweils mit dem Eingang der nächsten Reihe verbunden wird. So entsteht aus den einzelnen LED-Ketten eine zusammenhängende 16 × 12 Matrix.
Bauteile und Bezugsquellen
Für den Nachbau werden nur wenige Bauteile benötigt. Die hier aufgeführten Bezugsquellen sind Beispiele für die von mir verwendeten beziehungsweise geeignete Bauteile. Es handelt sich nicht um Werbung oder Affiliate-Links.
-
4 × WS2811 RGB-LED-Kette, 12 V, je 50 LEDs
Für die 16 × 12 Matrix werden insgesamt 192 LEDs benötigt.
Beispiel bei Amazon -
1 × Set beleuchtete Arcade-Taster
Vier Taster werden für die Richtungssteuerung verwendet.
Beispiel bei Amazon -
1 × Wemos D1 mini (ESP8266)
Das Entwicklerboard übernimmt die Spielsteuerung.
Beispiel bei Amazon -
1 × Steckernetzteil 12 V / 1 A
Zur Versorgung der LED-Matrix und der Elektronik.
Beispiel bei Amazon -
1 × Miniatur-Drucktaster
Zum Zurücksetzen des gespeicherten Highscores.
Beispiel bei Reichelt -
1 × Spannungsregler 7805, TO-220
Zur Erzeugung der 5-V-Versorgung für den Wemos D1 mini.
Beispiel bei Reichelt -
1 × Elektrolytkondensator 10 µF / 16 V
Bestandteil der Spannungsversorgung mit dem 7805.
Beispiel bei Reichelt -
1 × Kondensator 330 nF
Bestandteil der Spannungsversorgung mit dem 7805.
Beispiel bei Reichelt -
1 × Widerstand 10 kΩ
Externer Pull-up-Widerstand für den Highscore-Reset an D0.
Beispiel bei Reichelt -
Optional: 1 × Buzzer
Für die Soundausgabe an D7 (GPIO13).
Werkzeug und sonstiges Material
Außerdem werden ein USB-Kabel zum Programmieren des D1 mini, etwas Schaltlitze, Lötzinn, Lötkolben, Kleinwerkzeug sowie Heißkleber und eine Heißklebepistole benötigt.
Einen passenden Werkzeugkoffer sowie ein Sperrholzbrett für den Aufbau der LED-Matrix findet ihr im Baumarkt eures Vertrauens.
Firmware installieren
Die fertige Firmware kann direkt über den Browser auf einen WeMos D1 mini (ESP8266) übertragen werden. Eine Installation der Arduino IDE ist dafür nicht erforderlich.