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.
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.
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.