LInux
für SYstem 80
Steuerung eines Gottlieb System 80
mit
LINUX
Version 2.3, Stand: 03.01.2008
Das Projekt wurde gestartet, um meine drei Hobbys miteinander zu verbinden:
- Aufbau/Entwurf von kleineren Elektronikschaltungen.
- Programmierung in C, vorzugsweise unter Linux.
- Reparatur und natürlich 'bespielen' von Gottlieb Flippern der Serie 80.
Ziel ist es, das CPU-Board eines Gottlieb Flippers komplett zu ersetzen.
Da ich mit diesem Projekt KEINERLEI
kommerzielle Interessen verfolge, wird
nach dem Prinzip 'keep it simple' vorgegangen.
Die vorhandenen Schnittstellen
zu den Lampen- und Spulentreiberboards sollen beibehalten werden.
(Der Entwurf
eines eigenen Treiberboards könnte ein schönes Folgeprojekt werden.)
Die erste Version basierte auf einer ISA-Schnittstellenkarte. Die zeitkritischen
Routinen (z.B. Display-Refresh)
machten mir jedoch arge Probleme, so dass ich mich fuer ein komplettes Redesign
entschied.
- Eine beliebige LINUX-Distribution (in meinem Fall: Debian 4.0 Etch), mit Software
Development, d.h.
Gnu-C Compiler. Das erforderliche C-Steuerprogramm
soll in diesem Projekt erstellt werden.
- Zu Dokumentationszwecken das Layout-Programm TARGET 3001! V11 p in der
kostenlosen Version für den PCB-POOL® Leiterplatten-Service!
http://www.pcbpool.de/
- Einen Gottlieb System80 Flipper, wobei das CPU-Board gegen den PC ersetzt
wird
- Einen alten Intel-PC, mit USB-Schnittstelle
- Reichlich Elektronikmaterial (ICs, Widerstände, Platinen ...)
Speziell:
-IO-Warriror 40 von
Code Mercenaries
fuer die USB und I2C Schnittstellen, sowie die Switch-Matrix
- PIC 16F872 fuer die Displaysteuerung
- PCF8574 für die Ansteuerung des Treiberboards
Die Kopplung mit dem Linux-Steuerrechner erfolgt über USB-Schnittstelle.
Hier setze ich den den
IO-Warriror 40 ein (Datenblatt).
Für ihn gibt es Treiber sowohl für Linux als auch für Windows.
Im Programm wird er als normales USB-Device angesprochen.
Der IO-Warrior unterstützt von Haus aus die Abfrage einer 8*8 Switch
Matrix und ist somit perfekt für die
Abfrage der Gottlieb Switch Matrix ausgestattet. Erste Tests haben einwandfrei
funktioniert.
Hierfür habe ich einen eigene Platine auf Basis des PIC16F872
(Datenblatt) entwickelt, die mittels eines kleinen Programmes
die Ansteuerung der Displays eigenständig ausführt. Angesprochen wird
Sie über einen I2C-Bus, dies erledigt der IO-Warriror.
Leider sind fast alle I/Os des IO-Warrirors belegt, so dass ich hier zusätzlich
den I/O-Extender PCF8474 einsetze (Datenblatt).
Der PCF8574 ist ein 8-Bit Port-Expander für den I2C Bus.
Noch etwas unübersichtlich, aber die Displays tuen es schon einmal
.
Noch mit einem ganzen Fuhrpark von PCF8574 und mit Pfostensteckern ..
Noch mal optimiert, (nur noch ein PCF8574) und mit selbst entworfenen EDGE-Connectoren
Hier die Innenansicht meines Gottlieb Spiderman.
Die CPU ist bereits gegen die LISY80 Platine ausgetauscht, quer durchs Bild das (rote) USB Kabel, welches
an den LINUX Steuerrechner geht.
Spiderman mit LISY80.
Hier ein Video welches das ganze in Aktion zeigt (Achtung! die AVI Datei ist 8 MB gross! ): Spiderman.AVI
Aufgenommen habe ich den Ablauf folgenden kurzen Testprogramms: Spiderman.c
Das Programm initialisiert den Flipper (macht sich dadurch bemerkbar, dass die 'merkwürdigen' Töne nach dem
Einschalten verschwinden.) Danach wartet es darauf, dass der Replay-Taster betätigt wird.
Nach Betätigen des Replay Tasters wird die Kugel ausgeworfen, das Display für Spieler 1
auf '00' gesetzt und die Displays von Spieler 2 bis 4 gelöscht. Das Status Display zeigt '01' an.
Jede weitere Schalterbewegung wird mit 10 Punkten gezählt. Geht
die Kugel in eines der 3 'Holes', wird sie sofort wieder ausgeworfen.
Geht der Ball aus (Outhole-Taster betätigt), endet das Spiel und die Game Over Lampe geht an.
Links vorne habe ich den Bildschirm des Steuerechners plaziert. Wenn man genau hinsieht, sieht man die
Bildschirmausgaben wenn die Kugel Schalter auf dem Spielfeld berührt.
- Einbau einer 'Ball Save' Funktion
- Möglichkeit der Namenseingabe bei Highscore
- Automatische Übermittlung der Punkte, z.B.
bei Turnieren. Hier könnte der Flipper auch die jeweiligen
Spielernamen anzeigen, bzw. verwalten.
- und und und ...