Inhaltsverzeichnis:

Arduino VGA-Konsole mit fünf Spielen - Gunook
Arduino VGA-Konsole mit fünf Spielen - Gunook

Video: Arduino VGA-Konsole mit fünf Spielen - Gunook

Video: Arduino VGA-Konsole mit fünf Spielen - Gunook
Video: Подключение Arduino к VGA монитора. Ардуино проекты. 2024, Juli
Anonim
Image
Image
Arduino VGA-Konsole mit fünf Spielen
Arduino VGA-Konsole mit fünf Spielen
Arduino VGA-Konsole mit fünf Spielen
Arduino VGA-Konsole mit fünf Spielen

In meinen vorherigen Instructables habe ich vereinfachte Versionen einiger der beliebtesten klassischen Arcade-Spiele mit einem bloßen Arduino und wenigen anderen Komponenten reproduziert. Später habe ich fünf davon in einer einzigen Skizze zusammengefügt. Hier zeige ich, wie Sie eine einfache Konsole bauen können, die Pong, Breakout, Bomber, Tetris und ein von Etch-a-Sketch inspiriertes Zeichenspielzeug spielen kann. Diese Konsole kann auch verwendet werden, um Snake und zwei weitere Spiele anderer Autoren zu spielen: Bit Ninja von Sandro Maffiodo alias "Smaffer" und Stacker von Nikita Kurylev.

Das Hauptmerkmal ist die Generierung eines VGA-Signals dank der VGAx-Bibliothek, daher benötigt die Konsole einen VGA-Monitor. Mein Ziel ist es, wie immer, jede "spezielle Komponente" zu vermeiden, um es zu bauen, Sie benötigen dann keine unterstützenden ICs oder Abschirmungen! Die einzigen Komponenten sind zwei Potentiometer, fünf Tasten, wenige Widerstände und ein DSUB15 (VGA) Anschluss. Ein Piezo-Lautsprecher ist optional. Sie können sehen, wie diese Spiele in den Bildern auf dieser Seite aussehen.

Die VGAx-Bibliothek ermöglicht die Verwendung von vier Farben mit einer Auflösung von 120 x 60 Pixeln, nicht viele, aber genug für diese Retro-Spielekonsole. Die Grafik ist roh, aber dank der Verwendung der Potentiometer laufen die Spiele flüssig. Einfache Soundeffekte sind ebenfalls verfügbar.

Schritt 1: So bauen Sie Ihre eigene Arduino VGA-Konsole

So bauen Sie Ihre eigene Arduino VGA-Konsole
So bauen Sie Ihre eigene Arduino VGA-Konsole
So bauen Sie Ihre eigene Arduino VGA-Konsole
So bauen Sie Ihre eigene Arduino VGA-Konsole

Laden Sie zuerst ArduinoVGAgame.ino- und/oder Snake.ino-Codes unten auf dieser Seite herunter und kopieren Sie sie auf Ihrem PC in ein Verzeichnis mit demselben Namen. Laden Sie die VGAx-Bibliothek von diesem Link auf GitHub herunter. Am einfachsten kopieren Sie es in den Arduino-Software-Unterordner namens "libraries", um sofort erkannt zu werden.

WICHTIG: Diese Bibliothek funktioniert für Arduno IDE 1.6.4, ist jedoch nicht vollständig kompatibel mit älteren oder neueren Versionen.

Laden Sie den Code in Ihr Arduino-Board hoch (ich habe sowohl Uno als auch Nano getestet). Eine Warnung für wenig verfügbaren Speicher ist normal. Wenn Sie keine anderen Fehler haben, ist alles in Ordnung und Sie können sofort damit beginnen, Ihre eigene Konsole zu bauen.

Dazu benötigen Sie:

  • ein Arduino Uno Rev. 3 oder Arduino Nano 3.x (ATmega328)
  • einen DSUB15-Anschluss, d. h. eine VGA-Buchse oder ein zu schneidendes VGA-Kabel.
  • Widerstände: 2 x 68 Ohm und 2 x 470 Ohm und 5 x 1 bis 2 kOhm
  • zwei 10 kOhm Linearpotentiometer (ähnliche Werte sind auch in Ordnung)
  • fünf Knöpfe
  • ein Stück Kabel
  • ein oder zwei schöne Boxen, um alle Komponenten zu platzieren.

Fakultativ:

  • ein Steckbrett oder ein Streifenbrett
  • ein Piezo-Lautsprecher

Der Schaltplan wird oben in diesem Schritt zusammen mit einem Beispiel für eine fertige „Konsole“gemeldet.

Das Schema zeigt, wie eine Taste und ein Potentiometer angeschlossen werden. Genauer gesagt müssen Sie fünf Tasten an die Pins 5, 10, 11, 12 und 13 anschließen. Die von jeder Schaltfläche ausgeführte Aktion wird in der oberen rechten Tabelle im Schaltplan beschrieben. Links wird gezeigt, wie ein Potentiometer angeschlossen wird (Sie benötigen zwei Potentiometer an den Pins A1 und A2). Der Lautsprecher muss an den analogen Pin A0 angeschlossen werden.

Ich habe das Arduino-Board mit dem VGA-Anschluss in eine Holzkiste gelegt, die auch das erste Spieler-Potentiometer und vier Tasten enthält, während sich das zweite Spieler-Potentiometer und seine Starttaste in einer separaten und kleineren Box befinden.

Wenn Ihnen dieses Spielzeug gefällt und Sie es reproduzieren möchten, freue ich mich, wenn Sie einen Kommentar schreiben oder ein Bild im Kommentarbereich unten senden.

Schritt 2: Spiele von anderen Autoren

Sandro Maffiodo hat kürzlich das Spiel BitNinja veröffentlicht. Hier finden Sie weitere Informationen und können den Code hier herunterladen.

Um meine Konsole zu verwenden, müssen Sie nur die Schaltfläche in seinem Code wie folgt neu zuordnen:

#define BTN_UP 11 (statt 13)

#define BTN_LEFT 10 (statt 12)

#define BTN_RIGHT 12 (statt 11)

Stacker von Nikita Kurylev ist hier erhältlich. Mehr Informationen hier.

Auch hier müssen Sie eine Schaltfläche in einem anderen Teil des Codes neu zuordnen: Ersetzen Sie einfach digitalRead(2) durch digitalRead(13).

Schritt 3: Anhang 1: Weitere Details zum Erstellen der Controller

Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller
Anhang 1: Weitere Details zum Erstellen der Controller

Je nach verfügbarem Material und Geschmack können Sie den Controller auf viele verschiedene Arten realisieren.

Ich realisiere sie gerne mit Holzkisten (siehe Bilder auf dieser Seite). Eine Hauptbox für den Arduino, den VGA-Anschluss und die Tasten und das Potenziometer des ersten Spielers; ein zweites (kleineres) nur für den zweiten Spielerknopf und das Rad (benötigt für Pong und das Zeichenspielzeug). Eine andere Möglichkeit besteht darin, alles in eine einzige größere Kiste zu packen.

Zuerst empfehle ich, den VGA-Port anzuschließen. Im ersten und zweiten Bild sehen Sie einige Details: Beachten Sie die beiden 470 Ohm Widerstände für Rot und Grün, die an Pin 6 bzw. 7 angeschlossen sind, und zwei 68 Ohm an Pin 3 und 9 für das horizontale und vertikale Synchronisationssignal.

Sie können verschiedene Farbkombinationen auswählen, je nachdem, welche Pins Sie am VGA-DSUB15-Anschluss anschließen, die Pins 1, 2 und 3 repräsentieren jeweils Rot, Grün, Blau (RGB). Ich habe die Pins 1 und 2 verbunden, somit habe ich folgende Farbkombination: (0, 0) = schwarz; (1, 0) = rot; (0, 1) = grün; (1, 1) = gelb.

Für alle verschiedenen Möglichkeiten empfehle ich, die Details auf der Seite zu lesen, auf der Sie die VGAx-Bibliotheken herunterladen.

Sobald der VGA-Anschluss fertig ist, können Sie alle anderen Kabel für die Tasten, Räder und Lautsprecher vorbereiten (siehe Bild 2).

Setzen Sie jetzt einfach alles zusammen: Denken Sie daran, dass jeder Button-Pin über einen 1 oder 2 kOhm Widerstand mit Masse verbunden werden muss, da sonst bei geöffnetem Button der Zustand des Pins undefiniert sein kann. Dies bedeutet, dass, wenn der Pin nicht angeschlossen ist, eine zufällige (statische) Spannung darauf liegen kann, die ihn aktivieren kann. Sehen Sie für mehr Deteils das Schema im zweiten Schritt dieses anweisbaren.

Der letzte Schritt besteht darin, alles an Ort und Stelle zu fixieren. Ich habe die Heißklebepistole verwendet, aber Sie können Ihre bevorzugte Methode verwenden.

Schritt 4: Anhang 2: Einige Überlegungen zu den Speichergrenzen

Es ist erstaunlich, dass ein einfacher Arduino in der Lage ist, ein VGA-Signal und all diese Spiele zusammen zu erzeugen. Der eigentliche Flaschenhals ist das Fehlen von SRAM. Der AVR-Mikrocontroller hat nur 2048 Bytes zur Verfügung, um die Variablen zu speichern und zu manipulieren, und die VGAx-Bibliothek speichert die Bildschirmvariablen in einem 120x60-Pixel-Framebuffer, wobei jedes Pixel 2 Bit (4 Farben) benötigt, also insgesamt 1800 Bytes. Somit bleiben nur noch 248 Byte für die Sketch-Variablen übrig. Außerdem sollte man meiner Erfahrung nach mindestens 100 Byte frei lassen, um Instabilitäten zu vermeiden. Bei Verwendung von mehr als 1950 Bytes dynamischem Speicher beginnt der Mikrocontroller, ein seltsames und unvorhersehbares Verhalten zu zeigen.

Dies bedeutet, dass alle Variablen von den verschiedenen Spielen gemeinsam genutzt werden müssen, was den Code ziemlich unlesbar und schwer zu debuggen macht. Es geht nicht nur darum, dem vorherigen Sketch "ein neues Spiel hinzuzufügen", sondern der gesamte Code muss tiefgreifend modifiziert und optimiert werden.

Außerdem musste ich das kleinstmögliche Variablenformat verwenden: Zum Beispiel musste ich für alle Koordinaten "byte" anstelle von "int" verwenden oder in anderen Fällen "int" anstelle von "float" bevorzugen.

Schließlich geht mein Dank an Sandro Maffiodo aka Smaffer, den Schöpfer der VGAx-Bibliothek und des großartigen Spiels BitNinja. Ohne diese Bibliothek wäre dieses Projekt nicht realisierbar gewesen.

Vielen Dank auch an Nikita Kurylev für das einfache aber lustige Spiel Stacker.

Empfohlen: