Innehållsförteckning:

Jammarduino DUE - DIY PC till Jamma -gränssnitt för arkadskåp: 6 steg
Jammarduino DUE - DIY PC till Jamma -gränssnitt för arkadskåp: 6 steg

Video: Jammarduino DUE - DIY PC till Jamma -gränssnitt för arkadskåp: 6 steg

Video: Jammarduino DUE - DIY PC till Jamma -gränssnitt för arkadskåp: 6 steg
Video: The ULTIMATE DIY Arcade Machine Guide 2024, November
Anonim
Jammarduino DUE - DIY -dator till Jamma -gränssnitt för arkadskåp
Jammarduino DUE - DIY -dator till Jamma -gränssnitt för arkadskåp

Denna instruerbara visar dig hur du skapar en enkel skärm för Arduino DUE för att ansluta en äkta arkadmaskin med låg upplösning CRT och jamma -kontakt till din PC.

Sköldens huvudsakliga utmatningar är:

- för att förstärka videosignalen som kommer från grafikkortet (för låg spänning för en äkta Arcade CRT -bildskärm)

- för att skydda din lågupplösta CRT -bildskärm från för högfrekventa horisontella synkroniseringssignaler

- för att "översätta" knapptryckningar på arkadkontrollpanelen till något datorn kan hantera

Jag kommer att visa dig hur du kan utöka gränssnittsanvändningen för att styra Arcade Racing -hjul och -spinnare.

Observera: skölden tvingar INTE videosynkroniseringssignalen till låga frekvenser: du behöver specifik programvara för det. Jag föreslår att du använder CRT emudrivers eller Soft15KHz.

Steg 1: Hårdvara

Jag antar att du har en lödstation och lite tenn för hand och du vet hur du använder dem. Eftersom videoförstärkaren är en SMD med 0,65 mm tonhöjd, föreslår jag att du köper ett lödningsflöde för att hjälpa till att lödda den mikroben. Jag använde en billig "no-clean" Rosing Mildly Activated (RMA) penna med utmärkta resultat.

Gränssnittet består av:

- 1x Arduino DUE mikrokontrollerkort

- 1x THS7374 videoförstärkare

- 1x TSSOP14 till DIP14 adapter

- 1x ljudförstärkare

- 1x jamma greppbräda

- 1x 5x7 cm prototypbräda, dubbelsida

- 1x 1N4148 diod

- 7x 1Kohm motstånd

- 1x 820 ohm motstånd

- 3x 220 ohm motstånd

- 1x bandlinje, 2,54 mm avstånd

- 1x VGA -kabel

- 1x ljudkabel

Steg 2: Scheman

Scheman
Scheman

Här är ett färgschema för hela projektet. Inte så ortodox, men lättare att följa, i mina förhoppningar.

Kablar är lika enkla som de ser ut:

- färglinjer kommer från PC VGA -kontakten till videoförstärkaren; ett 1Kohm -motstånd till jord sänker strömmen till videoförstärkarens ingång. På utgångssidan sänker ett seriemotstånd strömmen till arkad CRT.

- synkroniseringslinjen är på något sätt mer "komplex": separat synkronisering från VGA görs sammansatt, först sänks sedan med en spänningsdelare för att respektera Arduino DUE -specifikationerna (3,3V logik). Spänningsdelaren beräknas med en 5V synkroniseringssignal.

- videoförstärkare (THS7374) kan drivas med 3.3V eller 5V; eftersom att strömförsörjning vid 5V möjliggör ett bredare intervall av ingångsspänningar/signaler och att THS7374 kan styras med 3,3V även om den är juicerad vid 5V, gick jag 5V -vägen.

- videojord, arduino DUE -jord, THS7374 -jord och jamma -kontaktjord är kortslutna.

- Arduino DUE 5V och Jamma 5V -linjer FÅR INTE KORTSLUTAS.

- Dra INTE ljudförstärkaren från USB -kabeln: du behöver en extern källa för det på grund av strömgränser (dvs. PC ATX PSU). Om du gör det kommer du att skada din USB -port eller till och med din dator.

VGA -kontakt: ett ord av försiktighet

Jag har nyligen haft möjlighet att uppdatera datorn som används med min jammarduino DUE. Även om jag hade testat det med två olika datorer tidigare använde de båda ATI -kort av samma familj (ATI 9250 och 9550). Den nya datorn var utrustad med en HD5750 med en enda DVI -analog utgång (ingen VGA). Detta tvingade mig att använda en (passiv) DVI till VGA -adapter. Tja, efter lite kämpande märkte jag att VGA -kabeln som är ansluten till adaptern MÅSTE bara ha marken ansluten till stift 5 på VGA -kontakten för att fungera, inte stift från 6 till 10 som rapporterats i de flesta scheman på webben. Tänk på detta om du inte kan se någon synkroniseringssignal från ditt grafikkort.

Steg 3: Skiss/kod

Skiss/kod
Skiss/kod

Du måste installera Arduino IDE först; du måste också installera SAM Cortex M3 Core (finns inte som standard). Sist men inte minst, installera Arduino DUE -drivrutiner. Se den officiella guiden "Komma igång med Arduino Due" för den senaste informationen.

Skissen du behöver ladda upp till din Arduino DUE finns här bifogad. Packa upp och ladda "jammarduinoDUE.ino" till dig Arduino IDE, ladda sedan upp till arduino DUE via "programmerings" -porten. När skissen har laddats upp, kopplar du bort USB -kabeln från "programmerings" -porten och ansluter Arduino DUE via "Native USB" -port, annars fungerar inte kodens ingångsdel.

I grund och botten mäter Arduino DUE synkroniseringsfrekvensen och inaktiverar videoförstärkaren när synkroniseringen är för hög för en CRT med låg upplösning. Arduino DUE hanterar också ingångarna som kommer från kontrollpanelen och skickar standard MAME -tangenter vid viss knapptryckning. En skiftfunktion (aktiverad genom att hålla P1 START -knappen intryckt) ingår också, som kommersiella gränssnitt.

I tabellen standardknappsats. Du kan enkelt ändra standardnyckelkartan eller lägga till knappar efter egen vilja direkt på skissen.

Till exempel, om du vill tilldela volymkontrolltangenter för din emulator, bör du först definiera dessa knappar (låt oss säga knappsatsen "+" för volym upp och knappsatsen "-" för volym ned) i din emu-knapps meny först; lägg sedan till den skiftade knappen till de knappar som du vill att volymen ska öka eller minska. Låt säga att jag vill höja volymen genom att trycka på shift -tangenten och Player 1 -knappen 3. Jag kommer att ändra raden

{26, HIGH, 0, 180, 180}, // blanksteg - P1 B3

till

{26, HIGH, 0, 180, 223}, // mellanslag - P1 B3 (+)

Att "223" är ASCII -teckenkoden för knappsatsen "+".

Jag låter dig ta reda på hur du tilldelar "-" (eller vad du än föredrar) till funktionen "volym ned" som en övning (Tips: ASCII-kod 222):)

Tänk på att du i MAME bara kan tilldela servicelägesvolymen, inte den allmänna emuleringsvolymen; detta innebär att om det emulerade kortet inte tillåter mjukvaruvolymkontroll påverkas volymen.

Steg 4: Hur är det med inmatningsfördröjning?

Jag gjorde några tester för att se hur mycket fördröjning koden kunde införa; Tja, genom att skicka 3 knappar trycker du samtidigt på en komplett loop som tar cirka 4 ms att köra, så långt mindre än 33 ms en ram varar vid 30 FPS.

Steg 5: Hur är det med Jamma Racing Skåp?

Hur är det med Jamma Racing Skåp?
Hur är det med Jamma Racing Skåp?

Potentiometerhjul

Om ditt skåp är ett racingskåp är det mycket troligt att hjulet är potentiometerbaserat (du kan se en 5Kohm potentiometer på kontrollpanelens baksida).

Först och främst, ladda ner och installera joystickbiblioteket (vid dagens datum sägs endast version 1 av biblioteket vara kompatibelt med arduino DUE, men det är fortfarande ett mycket bra bibliotek).

Lägg sedan till de få raderna som följer till skissen i steg 4 för att enkelt hantera ratten (var du ska placera linjerna lämnas åt dig som en övning …)

#omfatta

int deadZone = 0;

void setup () {

Joystick.begin ();}

void loop () {

int readPot = analogRead (A3);

int wheelPos = map (readPot, 0, 1023, -127, 127);

if (wheelPos> deadZone || wheelPos <-deadZone) {Joystick.setXAxis (wheelPos);}

annars {Joystick.setXAxis (0);}

}

Som du kan se kan du ställa in en deadzone om det behövs (i ett bra fungerande arkadhjul är det bäst att ställa det till noll).

Anslutning av en potentiometer till Arduino DUE är enkel: sidostiften på potentiometern går till +3.3V och GND, torkarstiftet till en arduino DUE analog port (se bilden för referens). Jag definierade här den analoga stift 3 (A3) som ingången för torkaren på hjulpotentiometern, men du kan ställa in den analoga stift som bäst passar dina behov.

PS: vet du att pedaler i racingskåp ofta styrs av en potentiometer, än att tekniskt är hjul och pedaler samma enhet med en annan form? Det betyder att koden här kan användas för att styra äkta arkadpedaler också;)

Optiskt hjul

Om ditt hjul är optiskt kan det enkelt hanteras också, igen, med en liten ändring av startskissen.

En mycket vanlig pinout för optiska arkadkodare (Taito -spinnare, Atari -hjulkodare och så vidare) är:

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

Anslut 2. och 3. till Arduino DUE 5V och GND, och 1. och 4. till alla digitala stift som du gillar att uppmärksamma att en spänningsdelare är nödvändig för att sänka 5V -utgången från den optiska givaren till den 3.3V arduino DUE kan hantera. Skicka inte OptoA- och/eller OptoB 5V -utgångar direkt till dina Arduino DUE -ingångar, annars steker du sannolikt dessa ingångar eller till och med hela brädet. Du har blivit varnad.

I exempelskissen här kommer jag att använda digital stift 2 och digital stift 3 som optisk ut A och optisk ut B.

#omfatta

booleskt optA_state = HIGH;

int xAxisMov = 2;

void setup () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mouse.begin ();

}

void loop () {

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);}}} // loop end

Detta är en optisk kodning med låg upplösning 1X Counting. Det är mer än tillräckligt för Arcade -applikationer, men du kan enkelt höja upplösningen genom att lägga till en rad kod.

PS: vet du att optiska arkadhjul och arkadspinnare tekniskt sett är samma enhet med en annan form? Vet du att styrbollar tekniskt sett är en tvåaxlad spinnare? Det betyder att koden här kan användas för att styra äkta arkadspinnare och, med få, enkla modifieringar även styrbollar;)

Steg 6: Någon bild, eller det hände inte

Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!
Någon bild, eller det hände inte!

Här är några bilder på skölden jag gjorde. Det är inte ett arbete på hög nivå (satsa, jag är inte proffs), men det rockar 100% i mitt jamma Arcade Cabinet!

Rekommenderad: