Inhaltsverzeichnis:
- Schritt 1: Hardware
- Schritt 2: Schaltpläne
- Schritt 3: Skizze/Code
- Schritt 4: Was ist mit Input-Lag?
- Schritt 5: Was ist mit Jamma Racing Cabinets?
- Schritt 6: Ein Bild oder es ist nicht passiert
Video: Jammarduino DUE - DIY PC zu Jamma Interface für Arcade-Schränke - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Diese Anleitung zeigt Ihnen, wie Sie ein einfaches Schild für Arduino DUE erstellen, um eine echte Arcade-Maschine mit CRT- und Jamma-Anschluss mit niedriger Auflösung an Ihren PC anzuschließen.
Die Hauptgussformen des Schildes sind:
- um das von der Grafikkarte kommende Videosignal zu verstärken (zu niedrige Spannung für einen echten Arcade-CRT-Monitor)
- um Ihren CRT-Monitor mit niedriger Auflösung vor zu hochfrequenten horizontalen Sync-Signalen zu schützen
- "Übersetzen"-Tastendrücke auf dem Arcade-Bedienfeld in etwas, das der PC verarbeiten kann
Ich zeige Ihnen, wie Sie die Benutzeroberfläche erweitern können, um Arcade Racing-Räder und -Spinner zu steuern.
Hinweis: Der Schild zwingt das Video-Sync-Signal NICHT auf niedrige Frequenzen: Sie benötigen dafür eine spezielle Software. Ich schlage vor, dass Sie CRT-Emudriver oder Soft15KHz verwenden.
Schritt 1: Hardware
Ich gehe davon aus, dass Sie eine Lötstation und etwas Zinn von Hand haben und wissen, wie man sie benutzt. Da der Videoverstärker ein SMD mit einem Raster von 0,65 mm ist, empfehle ich Ihnen, etwas Lötflussmittel zu kaufen, um diese Mikrobe zu löten. Ich habe einen billigen "no-clean" Rosing Mildly Activated (RMA) Stift mit hervorragenden Ergebnissen verwendet.
Die Schnittstelle besteht aus:
- 1x Arduino DUE-Mikrocontroller-Platine
- 1x THS7374 Videoverstärker
- 1x TSSOP14 auf DIP14 Adapter
- 1x Audioverstärker
- 1x Jamma-Griffbrett
- 1x 5x7 cm Prototypentafel, doppelseitig
- 1x 1N4148 Diode
- 7x 1Kohm Widerstände
- 1x 820 Ohm Widerstand
- 3x 220 Ohm Widerstand
- 1x Streifenleitung, 2,54 mm Abstand
- 1x VGA-Kabel
- 1x Audiokabel
Schritt 2: Schaltpläne
Hier ist ein farbiges Schema des gesamten Projekts. Nicht so orthodox, aber in meiner Hoffnung leichter zu befolgen.
Verkabelungen sind so einfach wie sie aussehen:
- Farbleitungen kommen vom PC-VGA-Anschluss zum Videoverstärker; Ein 1-kOhm-Widerstand gegen Masse verringert den Strom zum Videoverstärkereingang. Auf der Ausgangsseite senkt ein Serienwiderstand den Strom zur Arcade-CRT.
- Die Sync-Leitung ist irgendwie "komplexer": Die separate Synchronisierung vom VGA wird zuerst zusammengesetzt und dann durch einen Spannungsteiler abgesenkt, um die Arduino DUE-Spezifikationen (3,3-V-Logik) zu respektieren. Der Spannungsteiler wird unter Annahme eines 5-V-Sync-Signals berechnet.
- Videoverstärker (THS7374) kann mit 3,3 V oder 5 V betrieben werden; Da die Stromversorgung mit 5 V einen größeren Bereich von Eingangsspannungen / -signalen ermöglicht und THS7374 mit 3,3 V gesteuert werden kann, auch wenn er mit 5 V entsaftet wird, bin ich den 5 V-Weg gegangen.
- Videomasse, Arduino DUE-Masse, THS7374-Masse und Jamma-Anschlussmasse sind kurzgeschlossen.
- Arduino DUE 5V- und Jamma 5V-Leitungen DÜRFEN NICHT KURZSCHLIESSEN.
- Entsaften Sie den Audioverstärker NICHT über das USB-Kabel: Sie benötigen dafür aufgrund der Strombegrenzung eine externe Quelle (z. B. das PC-ATX-Netzteil). Dadurch beschädigen Sie Ihren USB-Anschluss oder sogar Ihren PC.
VGA-Anschluss: Vorsicht!
Ich hatte vor kurzem die Gelegenheit, den mit meinem jammarduino DUE verwendeten PC zu aktualisieren. Auch wenn ich es vorher mit zwei verschiedenen PCs getestet hatte, beide verwendeten ATI-Karten der gleichen Familie (ATI 9250 und 9550). Der neue PC war mit einem HD5750 mit einem einzigen DVI-Analogausgang (kein VGA) ausgestattet. Dies zwang mich, einen (passiven) DVI-zu-VGA-Adapter zu verwenden. Nun, nach einigen Kämpfen habe ich festgestellt, dass das an den Adapter angeschlossene VGA-Kabel nur die Masse an Pin 5 des VGA-Anschlusses haben MUSS, um zu funktionieren, nicht an Pins 6 bis 10, wie in den meisten Schaltplänen im Internet berichtet. Beachten Sie dies, falls Sie kein Sync-Signal von Ihrer Grafikkarte sehen können.
Schritt 3: Skizze/Code
Sie müssen zuerst die Arduino IDE installieren; Sie müssen auch den SAM Cortex M3 Core installieren (standardmäßig nicht vorhanden). Zu guter Letzt installieren Sie die Arduino DUE-Treiber. Aktuelle Informationen finden Sie im offiziellen Tutorial "Erste Schritte mit Arduino Due".
Die Skizze, die Sie auf Ihr Arduino DUE hochladen müssen, ist hier beigefügt. Entpacken und laden Sie "jammarduinoDUE.ino" in Ihre Arduino-IDE, und laden Sie sie dann über den "Programming" -Port auf Arduino DUE hoch. Nachdem die Skizze erfolgreich hochgeladen wurde, trennen Sie das USB-Kabel vom "Programming" -Port und verbinden Sie Arduino DUE über den "Native USB" -Port, oder der Eingabeteil des Codes funktioniert nicht.
Grundsätzlich misst Arduino DUE die Sync-Frequenz und deaktiviert den Videoverstärker, wenn die Sync für eine CRT mit niedriger Auflösung zu hoch ist. Arduino DUE verarbeitet auch die vom Bedienfeld kommenden Eingaben und sendet standardmäßige MAME-Tasten bei einem bestimmten Tastendruck. Eine Shift-Funktion (aktiviert durch Gedrückthalten der P1 START-Taste) ist ebenso wie handelsübliche Schnittstellen enthalten.
In der Tabelle die Standard-Keymap. Sie können die Standardtastenbelegung ändern oder Schaltflächen nach Belieben direkt auf der Skizze hinzufügen.
Wenn Sie beispielsweise Ihrem Emulator Lautstärkeregelungstasten zuweisen möchten, sollten Sie diese Tasten (z. B. Tastenfeld "+" für Lautstärke erhöhen und Tastenfeld "-" für Lautstärke verringern) zuerst in Ihrem Emu-Tastenmenü definieren; Fügen Sie dann die Umschalttaste zu den Tasten hinzu, denen Sie die Lautstärke erhöhen oder verringern möchten. Sagen wir, ich möchte die Lautstärke erhöhen, indem ich die Umschalttaste und die Player 1-Taste 3 drücke. Ich werde die Zeile ändern
{26, HIGH, 0, 180, 180}, //Leerzeichen - P1 B3
zu
{26, HIGH, 0, 180, 223}, //Leerzeichen - P1 B3 (+)
Dass "223" der ASCII-Zeichencode für die Tastatur "+" ist.
Ich lasse Sie als Übung herausfinden, wie Sie das "-" (oder was auch immer Sie bevorzugen) der Funktion "Lautstärke verringern" zuordnen (Hinweis: ASCII-Code 222):)
Bitte beachten Sie, dass Sie in MAME nur die Lautstärke des Servicemodus zuweisen können, nicht die allgemeine Emulationslautstärke; Dies bedeutet, dass die Lautstärke nicht beeinflusst wird, wenn die emulierte Platine keine Software-Lautstärkeregelung zulässt.
Schritt 4: Was ist mit Input-Lag?
Ich habe einige Tests durchgeführt, um zu sehen, wie viel Verzögerung der Code verursachen könnte. Nun, durch gleichzeitiges Senden von 3 Tastendrucken dauert eine komplette Schleife etwa 4 ms, also weniger als die 33 ms, die ein Frame bei 30 FPS dauert.
Schritt 5: Was ist mit Jamma Racing Cabinets?
Potentiometerrad
Wenn Ihr Gehäuse ein Renngehäuse ist, ist es sehr wahrscheinlich, dass das Rad auf einem Potentiometer basiert (Sie können ein 5Kohm-Potentiometer auf der Rückseite des Bedienfelds sehen).
Laden Sie als erstes die Joystick-Bibliothek herunter und installieren Sie sie (zum heutigen Zeitpunkt soll nur Version 1 der Bibliothek mit arduino DUE kompatibel sein, aber es ist immer noch eine sehr gute Bibliothek).
Fügen Sie dann die wenigen Linien, die folgen, der Skizze in Schritt 4 hinzu, um das Rad leicht zu handhaben (wo die Linien zu platzieren sind, bleibt Ihnen als Übung überlassen…)
#enthalten
int DeadZone = 0;
Leere Einrichtung () {
Joystick.begin();}
Leere Schleife () {
int readPot = analogRead(A3);
int wheelPos = map(readPot, 0, 1023, -127, 127);
if(wheelPos>deadZone || wheelPos<-deadZone){ Joystick.setXAxis(wheelPos);}
else {Joystick.setXAxis(0);}
}
Wie Sie sehen, können Sie bei Bedarf eine Totzone einstellen (in einem gut funktionierenden Arcade-Rad ist es am besten, sie auf Null zu setzen).
Die Verkabelung eines Potentiometers mit Arduino DUE ist unkompliziert: Die seitlichen Pins des Potentiometers gehen auf +3,3 V und GND, der Wischerstift an einen analogen Arduino DUE-Port (siehe das Bild als Referenz). Ich habe hier den analogen Pin 3 (A3) als Eingang für den Schleifer des Radpotentiometers definiert, aber Sie können den analogen Pin einstellen, der Ihren Bedürfnissen am besten entspricht.
PS: Wissen Sie, dass Pedale in Rennschränken oft über ein Potentiometer gesteuert werden, als technisch gesehen Räder und Pedale dasselbe Gerät mit einer anderen Form sind? Dies bedeutet, dass der Code hier auch verwendet werden könnte, um echte Arcade-Pedale zu steuern;)
Optisches Rad
Wenn Ihr Rad optisch ist, kann es mit einer kleinen Änderung der Ausgangsskizze auch wieder leicht gehandhabt werden.
Eine sehr gebräuchliche Pinbelegung für optische Arcade-Encoder (Taito-Spinner, Atari-Rad-Encoder usw.) ist:
1. OptoA OUT
2. +5V
3. GND
4. OptoB OUT
Verbinden Sie 2. und 3. mit Arduino DUE 5V und GND und 1. und 4. mit einem beliebigen digitalen Pin. Achten Sie darauf, dass ein Spannungsteiler erforderlich ist, um den 5-V-Ausgang des optischen Encoders auf den 3,3-V-Arduino DUE zu senken. Senden Sie OptoA- und / oder OptoB-5-V-Ausgänge nicht direkt an Ihre Arduino DUE-Eingangspins oder Sie werden wahrscheinlich diese Eingänge oder sogar die gesamte Platine braten. Du wurdest gewarnt.
In der Beispielskizze hier verwende ich den digitalen Pin 2 und den digitalen Pin 3 als optischer Ausgang A und optischer Ausgang B.
#enthalten
boolescher optA_state = HIGH;
int xAxisMov = 2;
Leere Einrichtung () {
pinMode (2, INPUT_PULLUP); //OptA
pinMode (3, INPUT_PULLUP); //OptB
Maus.begin();
}
Leere Schleife () {
if (optA_state == HIGH && digitalRead(2) == LOW){
optA_state=!optA_state;
if(digitalRead(3) == HIGH){ Mouse.move(xAxisMov, 0, 0);} else{Mouse.move(-xAxisMov, 0, 0);} } } // Schleifenende
Dies ist eine optische 1X-Zählcodierung mit niedriger Auflösung. Es ist mehr als ausreichend für Arcade-Anwendungen, aber Sie können die Auflösung leicht erhöhen, indem Sie einige Codezeilen hinzufügen.
PS: Wissen Sie, dass optische Arcade-Räder und Arcade-Spinner technisch dasselbe Gerät mit einer anderen Form sind? Wussten Sie, dass Trackballs technisch gesehen ein 2-Achsen-Spinner sind? Dies bedeutet, dass der Code hier verwendet werden könnte, um echte Arcade-Spinner und mit wenigen einfachen Modifikationen auch Trackballs zu steuern;)
Schritt 6: Ein Bild oder es ist nicht passiert
Hier sind einige Bilder von dem Schild, das ich gemacht habe. Es ist keine Arbeit auf hohem Niveau (ich wette, ich bin kein Profi), aber es rockt zu 100% in meinem Jamma-Arcade-Kabinett!
Empfohlen:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): 3 Schritte
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): Manchmal korrigiert die Autokorrektur möglicherweise etwas, das Sie nicht korrigieren möchten, z. Textabkürzungen beginnen sich in Großbuchstaben zu setzen (imo korrigieren zum Beispiel zu IMO). So erzwingen Sie, dass die Korrektur eines Wortes oder einer Phrase beendet wird, ohne aut zu deaktivieren
Interessante Programmieranleitung für Designer - Bringen Sie Ihr Bild zum Laufen (Teil 2): 8 Schritte
Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2): Mathematik scheint für die meisten von Ihnen nutzlos zu sein. Die in unserem täglichen Leben am häufigsten verwendete ist einfach Addieren, Subtrahieren, Multiplizieren und Dividieren. Es ist jedoch ganz anders, wenn Sie mit Programm erstellen können. Je mehr Sie wissen, desto mehr wundervolle Ergebnisse werden Sie erhalten
Installieren des Windows-Subsystems für Linux (WSL): 3 Schritte
Installieren des Windows-Subsystems für Linux (WSL): Diese Anleitung soll Benutzern helfen, das Windows-Subsystem für Linux auf ihrem Windows 10-Computer zu installieren. Die spezifische Linux-Distribution, die dieser Befehlssatz verwendet, heißt Ubuntu. Schauen Sie hier für eine Übersicht über die verschiedenen Linux
MIDI Step Interface: 12 Steps (mit Bildern)
MIDI Step Interface: Spanische Version hier.In diesem anweisbaren zeigen wir Ihnen, wie Sie ein Licht- und Sound-Interface erstellen, das zum Spielen von "Simon Says" verwendet werden kann; und als MIDI-Interface. Beide Modi werden mit den Füßen gespielt.HintergrundDas Projekt wurde geboren, weil