Indholdsfortegnelse:

Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe: 6 trin
Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe: 6 trin

Video: Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe: 6 trin

Video: Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe: 6 trin
Video: I built a PC, but it moves 2024, November
Anonim
Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe
Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe

Denne instruktive viser dig, hvordan du opretter et simpelt skjold til Arduino DUE til at interface en ægte arkademaskine med lav opløsning CRT og jamma -stik til din pc.

Skjoldets vigtigste pourposer er:

- for at forstærke videosignalet, der kommer fra grafikkortet (for lav spænding til en ægte Arcade CRT -skærm)

- for at beskytte din lavopløsnings CRT -skærm mod for højfrekvente vandrette synkroniseringssignaler

- at "oversætte" knappen trykker på arkade kontrolpanel til noget pc'en kan klare

Jeg vil vise dig, hvordan du udvider brugerfladen til at styre Arcade Racing hjul og spinnere.

Bemærk: skjoldet tvinger IKKE videosynkroniseringssignalet til lave frekvenser: du har brug for specifik software til det. Jeg foreslår, at du bruger CRT emudrivers eller Soft15KHz.

Trin 1: Hardware

Jeg vil antage, at du har en loddemetal og noget tin i hånden, og du ved, hvordan du bruger dem. Da videoforstærkeren er en SMD med en afstand på 0,65 mm, foreslår jeg, at du køber en loddeflux for at hjælpe med at lodde den mikrobe. Jeg brugte en billig "no-clean" Rosing Mildly Activated (RMA) pen med fremragende resultater.

Grænsefladen består af:

- 1x Arduino DUE mikrokontroller bord

- 1x THS7374 videoforstærker

- 1x TSSOP14 til DIP14 adapter

- 1x lydforstærker

- 1x jamma gribebræt

- 1x 5x7 cm prototypebræt, dobbeltside

- 1x 1N4148 diode

- 7x 1Kohm modstande

- 1x 820 ohm modstand

- 3x 220 ohm modstand

- 1x stribelinje, 2,54 mm afstand

- 1x VGA -kabel

- 1x lydkabel

Trin 2: Skemaer

Skemaer
Skemaer

Her er et farvet skema for hele projektet. Ikke så ortodoks, men lettere at følge, i mit håb.

Ledninger er lige så lette som de ser ud:

- farvelinjer kommer fra PC VGA -stikket til videoforstærkeren; en 1Kohm modstand til jord sænker strømmen til videoforstærkerindgangen. På output -siden sænker en seriemodstand strømmen til arcade CRT.

- synkroniseringslinje er på en eller anden måde mere "kompleks": separat synkronisering fra VGA er lavet sammensat, først og derefter sænket af en spændingsdeler for at respektere Arduino DUE -specifikationerne (3,3V logik). Spændingsdeleren beregnes under forudsætning af et 5V synkroniseringssignal.

- videoforstærker (THS7374) kunne forsynes med 3,3V eller 5V; Da strømforsyningen ved 5V giver mulighed for et bredere spektrum af indgangsspændinger/signaler, og at THS7374 kan styres med 3,3V, selvom den er saftigt ved 5V, gik jeg 5V -vejen.

- videojord, arduino DUE -jord, THS7374 -jord og jamma -stikjord er kortsluttet.

- Arduino DUE 5V og Jamma 5V linjer MÅ IKKE KORTSLUTES.

- SKAL IKKE sættes lydforstærkeren fra USB -kablet: du har brug for en ekstern kilde til det på grund af strømgrænser (dvs. PC ATX PSU). Hvis du gør det, vil du beskadige din USB -port eller endda din pc.

VGA -stik: et ord af forsigtighed

Jeg har for nylig haft mulighed for at opdatere den pc, der blev brugt med min jammarduino DUE. Selvom jeg havde testet det med to forskellige pc'er før, brugte de begge ATI -kort af samme familie (ATI 9250 og 9550). Den nye pc var udstyret med en HD5750 med en enkelt DVI analog udgang (ingen VGA). Dette tvang mig til at bruge en (passiv) DVI til VGA -adapter. Efter nogle problemer bemærkede jeg, at VGA -kablet tilsluttet adapteren kun SKAL have jorden tilsluttet pin 5 på VGA -stikket for at fungere, ikke stifter fra 6 til 10 som rapporteret i de fleste skemaer på nettet. Husk dette, hvis du ikke kan se noget synkroniseringssignal fra dit grafikkort.

Trin 3: Skitse/kode

Skitse/kode
Skitse/kode

Du skal først installere Arduino IDE; du skal også installere SAM Cortex M3 Core (findes ikke som standard). Sidst men ikke mindst skal du installere Arduino DUE -drivere. Se den officielle "Kom godt i gang med Arduino Due" -tutorial for at få de mest opdaterede oplysninger.

Skitsen, du skal uploade til din Arduino DUE, er vedhæftet her. Udpak og indlæs "jammarduinoDUE.ino" til dig Arduino IDE, og upload derefter til arduino DUE via "programmerings" port. Efter at skitsen er blevet uploadet, skal USB -kablet afbrydes fra "programmerings" -porten og tilsluttes Arduino DUE via "Native USB" -porten, ellers fungerer inputens del af koden ikke.

Grundlæggende måler Arduino DUE synkroniseringsfrekvensen og deaktiverer videoforstærkeren, når synkroniseringen er for høj til en lav opløsning CRT. Arduino DUE håndterer også input, der kommer fra kontrolpanelet, og sender standard MAME -taster ved et bestemt tryk på knappen. En skiftfunktion (aktiveret ved at holde P1 START -knappen nede) er også inkluderet, ligesom kommercielle grænseflader.

I tabellen standard keymap. Du kan nemt ændre standardnøglekortet eller tilføje knapper efter din vilje direkte på skitsen.

Hvis du f.eks. Vil tildele volumenkontroltaster til din emulator, skal du først definere disse taster (lad os sige tastaturet "+" for lydstyrke op og tastatur "-" for lydstyrke ned) i din emutastemenu først; tilføj derefter den skiftede tast til de knapper, du vil have lydstyrkeforøgelse eller -nedsættelse tildelt. Lad os sige, at jeg vil øge lydstyrken ved at trykke på shift -tasten og Player 1 -knap 3. Jeg vil ændre linjen

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

til

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

At "223" er ASCII -tegnkoden for tastaturet "+".

Jeg lader dig finde ud af, hvordan du tildeler "-" (eller hvad du nu foretrækker) funktionen "lydstyrke ned" som en øvelse (Tip: ASCII-kode 222):)

Husk, at du i MAME kun kan tildele servicetilstandsvolumen, ikke den generelle volumen for emulering; dette betyder, at hvis det emulerede kort ikke tillader softwarevolumenkontrol, påvirkes lydstyrken ikke.

Trin 4: Hvad med Input Lag?

Jeg lavede nogle tests for at se, hvor meget forsinkelse koden kunne indføre; godt, ved at sende 3 knapper tryk på samtidig tager en komplet sløjfe cirka 4 ms at blive udført, så langt mindre end de 33 ms en ramme varer ved 30 FPS.

Trin 5: Hvad med Jamma Racing Skabe?

Hvad med Jamma Racing Skabe?
Hvad med Jamma Racing Skabe?

Potentiometer hjul

Hvis dit kabinet er et racerskab, er det meget sandsynligt, at hjulet er potentiometerbaseret (du kan se et 5Kohm potentiometer på bagsiden af kontrolpanelet).

Først og fremmest skal du downloade og installere joystick -biblioteket (på datoen i dag siges kun version 1 af biblioteket at være kompatibel med arduino DUE, men det er stadig et meget godt bibliotek).

Tilføj derefter de få linjer, der følger, til skitsen i trin 4 for let at håndtere hjulet (hvor linierne skal overlades til dig som en øvelse …)

#omfatte

int deadZone = 0;

ugyldig opsætning () {

Joystick.begin ();}

void loop () {

int readPot = analogRead (A3);

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

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

ellers {Joystick.setXAxis (0);}

}

Som du kan se, kan du om nødvendigt indstille en deadzone (i et godt fungerende arkadehjul er det bedst at sætte det til nul).

Tilslutning af et potentiometer til Arduino DUE er ligetil: sidestifter på potentiometeret går til +3.3V og GND, viskerstift til en arduino DUE analog port (se billedet for reference). Jeg definerede her den analoge pin 3 (A3) som input til viskeren af hjulpotentiometeret, men du kan indstille den analoge pin, der passer bedst til dine behov.

PS: ved du, at pedaler i racerkabinetter ofte styres af et potentiometer, end teknisk er hjul og pedaler den samme enhed med en anden form? Det betyder, at koden her også kan bruges til at styre ægte arkadepedaler;)

Optisk hjul

Hvis dit hjul er optisk, kan det også let håndteres igen, med en lille ændring af startskitsen.

En meget almindelig pinout til optiske Arcade -encodere (Taito -spinnere, Atari -hjulkodere og så videre) er:

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

Tilslut 2. og 3. til Arduino DUE 5V og GND, og 1. og 4. til enhver digital pin, du kan lide at være opmærksom på, at en spændingsdeler er nødvendig for at sænke 5V output fra den optiske encoder til 3.3V arduino DUE kan klare. Send ikke OptoA- og/eller OptoB 5V -udgange direkte til dine arduino DUE -indgangsstifter, eller du vil sandsynligvis stege disse input eller endda hele brættet. Du er blevet advaret.

I skitsen her vil jeg bruge digital pin 2 og digital pin 3 som optisk ud A og optisk ud B.

#omfatte

boolsk optA_state = HIGH;

int xAxisMov = 2;

ugyldig opsætning () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mus.begynd ();

}

void loop () {

hvis (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

Dette er en optisk kodning med 1X optælling med lav opløsning. Det er mere end tilstrækkeligt til Arcade -applikationer, men du kan let hæve opløsningen ved at tilføje en række kode.

PS: ved du, at optiske arkadehjul og arkadespinnere teknisk set er den samme enhed med en anden form? Ved du, at trackballs teknisk set er en 2 -akset spinner? Det betyder, at koden her kan bruges til at styre ægte arkadespinnere og med få, lette ændringer også trackballs;)

Trin 6: Nogle billeder, eller det skete ikke

Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!
Noget billede, eller det skete ikke!

Her er nogle billeder af det skjold, jeg lavede. Det er ikke et arbejde på højt niveau (sats det, jeg er ikke en professionel), men det rocker 100% i mit jamma Arcade Cabinet!

Anbefalede: