Zum Inhalt springen

OsziPong

Inhaltsverzeichnis

Mit der OsziPong kann man auf jedem Osziloskop, ohne Umbau des Gerätes, Pong spielen. Hierfür wird der sog. XY-Modus genutzt, den jedes Osziloskop besitzt. Oszipong eignet sich sowohl für digitale als auch analoge Osziloskope, aber nur auf analogen Bildröhren kommt es mit einem geisterhaft grünen Leuchten so richtig zur Geltung. Ein kleiner Piezolautsprecher sorgt für den nötigen Sound.

PongAufScope

Spielablauf

Zu Beginn des Spiels wird mit einem großen Logo angekündigt, das es sich hier um das Spiel “Pong” handelt. Das Spiel beginnt nach einigen Sekunden. Der Ball startet mit einer zufälligen Geschwindigkeit und Richtung. Mit den beiden Potis kontrollieren die Spieler ihre Courser. Beide Spieler versuchen den Ball ins gegnerische Feld zu spielen. Dabei werden durch Ereignisse wie z.B. das Auftreffen des Balls auf einen Courser Soundeffekte ausgelöst.

Gespielt wird bis einer der Spieler 30 Punkte erreicht hat. Der Punktestand wird am oberen Rand des Spielfeldes eingeblendet. Sobald einer der Spieler 30 Punkte erreicht hat, friert die aktuelle Spielszene. Der Punktestand bleibt zu sehen, damit jeder Spieler erkennen kann wer mit wieviel Abstand gewonnen hat. Der blinkende Schriftzug „Press Reset“ fordert die Spieler auf, ein weiteres Spiel zu starten. Der Resettaster startet den µCs neu. Ein Reset bewirkt also einen kompletten Neustart der Software. Daher wird beim nächsten Spielbeginn wieder der Schriftzug „PONG“ eingeblendet.

PongAufScope

Bildausgabe

Mit zwei R2R-DACs werden zwei Steuerspannungen generiert, mit denen das Bild auf dem Osziloskopbildschrim gezeichnet wird. Hierfür wird das Osziloskop im XY-Modus betrieben, der an allen alten und neueren Scopes vorhanden ist. In diesem Modus kann der Elektronenstrahl mit einer Steuerspannung in X- und mit einer zweiten Steuerspannung in Y-Richtung abgelenkt werden. Wird der Elektronenstrahl über den Bildschirm geführt, leuchtet der Schrim auf seiner Bahn nach und es entsteht ein Bild. Nach einer Weile verblassen die gezeichneten Linien, das Bild verschwindet wieder und es kann ein neues Bild gezeichnet werden.

In dieser Abbildung ist als Beispiel zu sehen, wie mit den beiden Spannungen ein Rechteck auf dem Osziloskop gezeichnet wird.

PongAufScope

Allerdings kann der Elektronenstrahl nicht abgeschaltet werden und zeichnet ununterbrochen. Daher besteht das ganze Bild aus einer ununterbrochenen Linie und einzelne Objekte wie Courser, der Ball, Spielfeld, etc. hängen über Verbindungslinien zusammen. Mit einem Trick können dennoch einzelne Objekte auf dem Bilschirm gezeichnet werden. Je länger der Elektronenstrahl auf einen Punkt auf dem Schirm strahlt, desto heller wird dieser Punkt. Durch die Geschwindigkeit mit der der Strahl über den Schirm geführt wird, kann die Helligkeit der Linie bestimmt werden. Daher werden Linien, die nicht sichtbar sein sollen schnell gezeichnet und die Courser, das Spielfeld, etc. langsam.

Der Ball wird gesondert behandelt. Während der µC die Spielelogik berechnet, hat er keine Rechenleistung übrig, um den Elektronenstrahl zu bewegen. In dieser Zeit steht der Strahl für längere Zeit still und kann nicht bewegt werden. Während dieser Zeit wird der Elektronenstrahl auf der Position des Balls „geparkt“. Dadurch wird der Ball gezeichnet. Durch die lange Belichtungszeit wird der Ball wesendlich heller als die anderen Objekte auf dem Schirm gezeichnet. Dies sorgt dafür, dass der Ball in der Bewegung einen Schweif hinter sich herzieht, da der Schirm an diesen Stellen länger nach leuchtet.

Nachbau

Der einzige verwendete Halbleiter auf der Platine ist ein µC der Firma Atmel, der ATMega32. Alle anderen Bauteile sind passive Bauelemente wie Widerstände und Kondensatoren. Alle Bauteile sind Through-Hole oder bedrahtet, was es selbst Anfängern ermöglicht das OsziPong zusammen zu löten. Notfalls sogar auf Lochraterplatine.

PongAufScope

Dateien

Für Leute die eh alles auf Lochraster auflöten:

Schaltplan als pdf

Hier ist der kompilerte Code. Es kann entweder ein ATMega16 oder ein ATMega32 verwendet werden. Die Chips sind Pinkompatibel. Achtung: Nach dem programmieren müssen die Fuse-Bits so gesetzt werden, dass der interne Oszilator mit 8MHz läuft.

Hexcode für ATMega16: Hex-Code für den ATMega16

Hexcode für ATMega32: Hex-Code für den ATMega32

Alle CAD-Files:

Eagle-Schaltplan

Eagle-PCB-Layout