Arduino Video Game

Da ich noch ein einfaches LCD Display und ein Arduino rumliegen hatte, beschloss ich daraus ein kleines Videogamesystem zu bauen. Zur Steuerung soll ein alter Joystick mit 9 poligem Anschluß verwendet werden. 

 

Beim Display handelt es sich um ein typisches Modell das als Monitor für Rückfahrkameras in Fahrzeugen gedacht ist.

Das Display ist deshalb auch für eine 12V Spannungsversorgung ausgelegt. Da ich das ganez aber evtl. dann auch ohne Netzteil mit einem 5V Akkupack betreiben möchte, stand der Umbau der Spannungsversorgung des Displays als nächstes auf dem Plan.

 

 

 

Derartige Displays laufen i.d.R. intern auch komplett auf 5V und sind nur für die Nutzung im PKW entsprechend für 12V konzipiert. 

Hat man die Rückseite geöffnet, muss man i.d.R. nach einem 8 beinigen IC Ausschau halten. Im Idealfall sind diese dann auch beschriftet. 

Im vorliegenden Display ist einer der beiden IC u.a. mit einer 1509 beschriftet, welches ein Teil einer Bezeichnung für ein Spannungswandler ist. 

Im Netz findet man dazu diverse Datenblätter zur Pinbelegung. Derzeit kommt über Pin 1 die Eingansgspannung von 12V an und wird dann in 5V gewandelt und liegt dann an Pin 2 an.

Um sicher zu gehen kann man im laufenden Betrieb am IC messen, ob denn die spekulierten Pins und Spannungen auch vorliegen.

Jetzt muss der IC entfernt werden. Ich habe mit einem spitzen Messer die Kontakte auf der einen Seite getrennt und den Chip dann mehrmals zur Seite umgeknickt bis die Beinchen gebrochen waren.

Dann nur noch Pin 1 und Pin 2 miteinander verlöten, und schon geht die zukünftige 5V Eingangsspannung direkt gleich in Pin 2 da eine Wandlung ja nicht mehr notwendig ist.

Test, funktioniert.

Beim Arduino handelt es sich um ein Mikrocontroller der an sich aus einem 16MHz Prozessor besteht, und diverse Pins zur Verfügung stellt die als Digitale und Analoge ein und Ausgänge genutzt werden können. Er bietet also z.B. keinen direkten Ausgänge für Bild oder Tonsignale an. Wie kann man da jetzt also ein Bildschirm anschließen....

 

Glücklicherweise hat sich ein Programmierer ran gemacht und eine entsprechend Library programmiert. Diese Library in Verbindung mit ein paar Drähten und 2 Widerständen, ermöglicht es mit dem Arduino ein Videosignal auszugeben. Außerdem stellt die Library diverse Grafikbefehle zur Verfügung. 

Heutzutage eigentlich nichts besonderes, aber man stelle sich vor das die Grafik sowie das entsprechende Ausgangssignal komplett im Prozessor erzeugt wird. Das ganze geschieht dann auch noch parallel zum normalen Programmablauf. Irgendwie beeindruckend.

Die Sache hat natürlich auch einen Haken. Die resultierende Auflösung ist begrenzt und beträgt 120x96 Pixel (wobei man dort noch etwas variieren kann), außerdem ist das Signal nur monochrom. Es wird also nur ein BAS-Signal erzeugt und kein FBAS -Signal. Aber wie schon erwähnt passiert das alles ohne Grafikkarte bzw. Grafikprozessor und Grafikspeicher, und dafür ist es beachtlich wie ich finde.

 

Für den Joystick nutze ich eine 9polige Buchse mit Flachbandkabelanschluß. Beim Anschluß an den Arduino nutze ich nur die Pins für die 4 Richtungen und den Feuerknopf. Benötige also 5 Eingänge am Arduino. 

Als zu programmierendes Spiel habe ich mir das Lightcycle Rennen aus dem Film Tron ausgewählt. Dabei mache ich eine Variante Mensch gegen Computer. Ich werde als erstes die Basics programmieren, also die Steurung und Darstellung des Spielers, sowie die "KI" des Computerfahrers. 

 

Links der erste Aufbau des ganzen mit der ersten Softwareversion. Hier ist der Startbildschirm zu sehen.

Hier nun ein Screenshoot aus dem Spiel. Der Spieler fährt rechts los, der Computer links. Beide fahren aufeinander zu. Wie man hier sieht hat der Computer dann schnell nach rechts abgebogen. Bevor es los geht werden zufällig Rechtecke als Hindernisse positioniert. 

Hier ein Screenshoot bei dem der Spieler gerade gegen eine Wand gefahren ist und explodiert.

 

Noch was zur "KI". Diese beschränkt sich darauf das der Computer natürlich schaut ob sich vor ihm ein Pixel auf dem Spielfeld befindet. Ist das der Fall wird per Zufall entschieden ob nach links oder rechts abgebogen wird. Außerdem wird der Computer ab und zu zufällig abgelenkt um das ganze etwas interessanter zu gestalten. Wie oft diese zufällige Wegänderung stattfindet kann über einen entsprechenden Parameter festgelegt werden.

Kommentare: 1
  • #1

    Jessica (Montag, 08 Juli 2024 07:05)

    Dear Mgcreations,

    I hope this email finds you well.



    We specialise in creating visually stunning and highly functional websites that help businesses like yours Mgcreations stand out in the digital landscape. In today's fast-paced and competitive market, having a professional and engaging website is essential for attracting and retaining customers. With a proven track record of implementing over 2,000 websites in the UK, our team of experienced designers and developers is dedicated to delivering customised web solutions tailored to meet your specific needs and goals.



    Could you please provide us with your phone number so we can schedule a convenient time for your free demo? Alternatively, you can reply to this email with your availability, and we will be happy to accommodate.



    We look forward to the possibility of working with you.