LED Matrix Module

Bei Ebay gab es LED Module mit jeweils 16x16 LEDs (Samsung SLM1608 MD2). Das Interessante ist, dass es sich um Rot/Grün LEDs handelt, so dass die einzelnen Bildpunkte auch in der Mischfarbe gelb leuchten können. Die Ansteuerung erfolgt über nur 6 Leitungen. Mehrere Module lassen sich (fast) beliebig aneinander reihen, so dass ziemlich große Grafikanzeigen möglich sind. Nicht zu unterschätzen ist allerdings auch der Stromverbrauch, da schließlich jedes Modul 512 LEDs besitzt.
Bisher wurde eine Grafik Demo und einige einfache Spiele für ein LED Modul geschrieben. Die drei möglichen Farben rot/grün/gelb lassen sich durch ein schnelles neu schreiben mit einem zweiten (und dritten) Bild auch in der Helligkeit regeln (PWM; Puls-Weiten-Modulation). Als Ergebnis lässt sich jede LED in drei verschiedenen Helligkeiten (und zusätzlich auch ausgeschaltet) einstellen. Grafiken sehen so deutlich schöner aus. Der Nachteil ist jedoch, dass das ständige neue Schreiben der Bilddaten nicht unerheblich viel Rechenleistung kostet und diese Methode so auf die Verwendung mit wenigen Modulen begrenzt ist.

Die Funktionsweise des PWM Tricks

Beim ersten ans Display gesendete Bild leuchten nur die LEDs, die besonders hell sein sollen. Beim zweiten zusätzlich die mit mittlerer Helligkeit. Nur beim dritten angezeigtem Bild werden alle LEDs eingeschaltet die irgendwie leuchten sollen, also die mit heller, mittlerer und schwacher Leuchtstärke. Soll also eine LED hell leuchten, so leuchtet sie die ganze Zeit mit maximaler Helligkeit, bei mittlerer Helligkeit nur 2/3 der Zeit und bei einem schwachen Leuchten 1/3 der Zeit mit maximaler Helligkeit. Da der Wechsel der drei Bilder so schnell erfolgt, so dass das menschliche Auge diesen nicht erkennen kann hat es für den Betrachter den Anschein als ob es die LEDs mit verschiedenen Helligkeitsstufen leuchten könnten.

Grafik Demo

Die Grafik Demo demonstriert die Ansteuerung eines LED Modul. Das Programm läuft auf einem AVR (beispielsweise ATmega32) mit 8MHZ Takt. Zusätzlich wurden einige Funktionen zum Anzeigen von Linien, Text, Scrolltext, Rechtecke und verschieben des Display Inhaltes nach oben/unten/links/rechts geschrieben. Die Grafik Demo belegt rund 8KB Flash und passt noch in einen ATmega8.

Bilder

Quellcode und Schaltpläne

Wie immer, Verwendung auf eigenes Risiko und ohne Gewähr.
demo1-schaltplan.png
demo1-version_1-00.zip
Schaltplan und Quellcode der Demo. Version: 1.00.
Getestet mit einem ATMEGA32, müsste jedoch auch mit einem ATMEGA16 oder ATMEGA8 funktionieren.

Gamebox

Als Erweiterung der Demo wurden Spiele geschrieben, soweit dies bei einer Begrenzung auf 16x16 Pixel möglich ist. Als Eingabegerät dient ein analoger Joystick. Digitale Gamepads funktionieren nicht! Realisierte Spiele: Tetris, Race, 4 Gewinnt, Pong, Snake und Reversi. Alle Spiele und Optionen sind über ein Menü auswählbar. Auch die obige Demo ist vorhanden. Getestet wurde die Software mit einem ATMEGA32. Alle Features zusammen benötigen rund 27,5KB Flash. Mit einem ATMEGA16 müsste die Auswahl der Spiele/Features daher reduziert werden. Bei einem ATMEGA8 wäre eine weitere Reduzierung die Auswahl notwendig, so dass eine Verwendung nicht sinnvoll ist. Als Experiment wurde der Quellcode soweit erweitert, dass das Programm auch auf einem PC lauffähig ist. Hierbei wird die Joystick Eingabe durch eine Mauseingabe ersetzt und die LEDs als passende farbige Kreise mit Hilfe der Grafik Libray GLUT dargestellt. Dies ermöglicht ein deutlich einfacheres Debuggen als wenn die Software auf dem Mikrocontroller läuft. Auch kann so jeder auch ohne AVR und LED Display die Funktionen der Gamebox testen. Der Spielspaß ist allerdings bei der PC Version bei weitem nicht der Selbe da sich auf dem PC die Zeitsteuerung nicht exakt nachbilden ließ und die Spiele so etwas träge wirken.

Bilder

Ein Video auf Youtube zeigt die Gamebox in Aktion.

Quellcode und Schaltpläne

Wie immer, Verwendung auf eigenes Risiko und ohne Gewähr.
Die Pins an denen der Joystick hängt dürfen nicht als Ausgang beschaltet werden. Für den Fall dass die Pins des AVR an dem die Achsen des Joysticks angeschlossen sind als Ausgang und auf logisch High geschaltet werden und gleichzeitig die Joystickachse in eine Stellung mit maximalem Ausschlag gestellt wird, wäre ein Kurzschluss die Folge, der zu einer dauerhaften Beschädigung des Mikrocontrollers führen dürfte. Es liegt also an der Software, dies zu verhindern.
gamebox1-schaltplan.png
gamebox-final1.zip
Schaltplan und Quellcode der Gamebox. Version: 1.00 (Final 1). Getestet mit einem ATMEGA32. Ebenfalls ist die Simulation für den PC (Linux) enthalten.
gamebox-final1-02.zip
Bugfixes + Aktualisierung für neuere avr-libc. Weihnachtsstern Modus.
Derzeit wäre noch Platz für ein weiteres Spiel oder Fehlerkorrekturen. Eine überzeugende Spielidee ist willkommen.