ebps.de.vu > Schaltungen > AVR > Game of Life

Game of Life

Beschreibung

Dieses Projekt entstand, nachdem ich bei einem Tauschhandel vier recht große Punktmatrix-Anzeigen mit je 8x8 grünen LEDs bekommen konnte. Zusammen bilden sie eine 16x16-Pixel-Anzeige, auf der eine Game-of-Life-Simulation abgespielt wird, wobei gegenüberliegende Kanten (links/rechts und oben/unten) miteinander "verbunden" sind, also z.B. die LEDs in der Pixelspalte ganz rechts Nachbarn der Spalte ganz links sind. Dreidimensional könnte man sich die Anordnung also als Torus vorstellen. Mit 8 Tastern können vorprogrammierte Startmuster gewählt werden, die RS232-Schnittstelle kann zusammen mit dem ATTiny2313-Bootloader verwendet werden, um Änderungen schnell in den AVR programmieren zu können (die Software selbst verwendet die RS232-Schnittstelle [noch] nicht).

Aufbau

Die Schaltung versteckt sich komplett unter den vier Anzeigen und musste deshalb sehr flach aufgebaut werden. Die Anzeigen werden so verschaltet, dass sie sich "von außen" wie eine 16x16-Matrix verhalten - es werden also die Zeilen von nebeneinanderliegenden und die Spalten von übereinanderliegenden Anzeigen verbunden. Der gestrichelt umrahmte Teil im Schaltplan muss 16 mal aufgebaut werden, einmal für jede Bus-Leitung. Anstelle der 16 NPN-Transistoren können auch zwei ULN2803 verwendet werden, die PNP-Transistoren sollten allerdings diskret eingebaut werden, da der Spannungsabfall bei Treiber-ICs sehr hoch wäre. Die Anzeigen müssen die Kathoden an den Spalten haben (Kingbright TC23-11 oder wie von mir verwendet Everlight ELM2881). Ist die Belegung andersrum, ist das auch kein Problem - da die Anzeigen ja quadratisch sind, können sie einfach um 90° gedreht eingebaut werden, so dass Zeilen und Spalten vertauscht sind.

Die Taster habe ich auf einer Extra-Platine montiert, um sie flexibel im Gehäuse befestigen zu können. Die RS232-Schnittstelle sowie eine Stiftleiste für das Netzteil (5 V/1,3 A von Pollin) mit Schalter sind direkt am Gehäuserand aus Leisten montiert. Wird kein Bootloader verwendet, kann die RS232-Schnittstelle auch ganz weggelassen werden - PD0 und PD1 am AVR bleiben dann einfach offen.

Software

Die Startmuster befinden sich am Anfang des Assemblerprogramms beim Label firstframes:. Jedes Muster besteht aus 32 Bytes, von denen jedes Byte 8 Pixel enthält. Zwei Bytes bilden also eine Zeile, wobei das MSB des ersten Bytes dem Pixel ganz links entspricht (LSB des zweiten Bytes ist also der Pixel ganz rechts). Eine Null steht für eine "tote" Zelle (LED aus), eine Eins für eine "lebendige" (LED an). Wenn Sie weniger als 8 Muster festlegen möchten, sollten Sie die anderen Muster mit Nullen füllen, die Anzeige ist (und bleibt) bei der Auswahl dieser Muster dann komplett dunkel.

Fotos

[Foto]
604
Unterseite der Schaltung und der Tasterplatine. Damit die Kabel die Taster nicht behindern können, habe ich sie auf den Unterseiten der Platinen angelötet. Außerdem sind zwei dicke Kabel für die Versorgungsspannung zu sehen.
[Foto]
800 | 1280
Die beiden Platinen von oben, noch ohne eingesteckte Matrix-Module. Beide Platinen stecken bereits auf den Befestigungsschrauben, die aus dem Gehäuseboden herausragen (Muttern als Abstandshalter). Über der Stiftleiste für die Versorgungsspannung und RS232 befindet sich noch eine 6-polige Stiftleiste für einen ISP-Programmer, da ich den AVR hier ohne Fassung eingelöten musste und ihn deshalb nicht zum Programmieren aus der Schaltung entfernen kann.
[Foto]
800 | 1280
Gleiches Foto mit eingesteckten Punktmatrixanzeigen und entgültig festgeschraubten Platinen.
[Foto]
800 | 1280
Die Schaltung im Testbetrieb zeigt Ignignokt an.
[Foto]
800 | 1280
Fertig ins Gehäuse eingebaut. Der Stecker ganz rechts gehört zum Pollin-Netzteil und passt genau auf eine dreipolige Stiftleiste, bei welcher der dritte Stift als Widerhaken mit einem dicken Tropfen Lötzinn versehen wurde. Die Gewindebolzen an der Sub-D-Buchse sind direkt ins Holz geschraubt.