Innholdsfortegnelse:

Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap: 6 trinn
Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap: 6 trinn

Video: Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap: 6 trinn

Video: Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap: 6 trinn
Video: Can You Reattach a Severed Finger? 🤔 2024, November
Anonim
Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap
Jammarduino DUE - DIY PC til Jamma -grensesnitt for arkadeskap

Denne instruksen vil vise deg hvordan du lager et enkelt skjold for Arduino DUE for å koble en ekte arkademaskin med lav oppløsning CRT og jamma -kontakt til PCen.

Skjoldets viktigste pourposes er:

- for å forsterke videosignalet som kommer fra skjermkortet (for lav spenning for en ekte Arcade CRT -skjerm)

- for å beskytte din CRT -skjerm med lav oppløsning mot for høyfrekvente horisontale synkroniseringssignaler

- for å "oversette" -knappene på arkadekontrollpanelet til noe PC -en kan håndtere

Jeg vil vise deg hvordan du kan utvide grensesnittbruken til å kontrollere Arcade Racing -hjul og spinnere.

Legg merke til: skjoldet Tvinger IKKE videosynkroniseringssignalet til lave frekvenser: du trenger spesiell programvare for det. Jeg foreslår at du bruker CRT emudrivers eller Soft15KHz.

Trinn 1: Maskinvare

Jeg antar at du har en loddestasjon og litt tinn for hånd, og du vet hvordan du bruker dem. Siden videoforsterkeren er en SMD med 0,65 mm tonehøyde, foreslår jeg at du kjøper en loddefluks for å hjelpe med å lodde den mikroben. Jeg brukte en billig "no-clean" Rosing Mildly Activated (RMA) penn med gode resultater.

Grensesnittet består av:

- 1x Arduino DUE mikrokontrollerbord

- 1x THS7374 videoforsterker

- 1x TSSOP14 til DIP14 adapter

- 1x lydforsterker

- 1x jamma gripebrett

- 1x 5x7 cm prototypebrett, dobbeltside

- 1x 1N4148 diode

- 7x 1Kohm motstander

- 1x 820 ohm motstand

- 3x 220 ohm motstand

- 1x stripelinje, 2,54 mm mellomrom

- 1x VGA -kabel

- 1x lydkabel

Trinn 2: Skjemaer

Skjemaer
Skjemaer

Her er et farget skjema for hele prosjektet. Ikke så ortodoks, men lettere å følge, i mitt håp.

Ledninger er like enkle som de ser ut:

- fargelinjer kommer fra PC VGA -kontakten til videoforsterkeren; en 1Kohm motstand til bakken senker strømmen til videoforsterkerinngangen. På utgangssiden senker en seriemotstand strømmen til arkade -CRT.

- synkroniseringslinje er på en eller annen måte mer "kompleks": separat synkronisering fra VGA er sammensatt, først, deretter senket med en spenningsdeler for å respektere Arduino DUE -spesifikasjonene (3.3V logikk). Spenningsdeleren beregnes ut fra et 5V synkroniseringssignal.

- videoforsterker (THS7374) kan drives med 3,3V eller 5V; Siden strømforsyningen på 5V gir mulighet for et bredere spekter av inngangsspenninger/signaler, og at THS7374 kan styres med 3,3V, selv om den tilføres 5V, gikk jeg 5V -veien.

- videobunn, arduino DUE -bakke, THS7374 -jord og jamma -kontaktjord er kortsluttet.

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

- IKKE press lydforsterkeren fra USB -kabelen: du trenger en ekstern kilde for det på grunn av gjeldende grenser (dvs. PC ATX PSU). Hvis du gjør det, vil du skade USB -porten eller til og med PCen.

VGA -kontakt: et forsiktig ord

Jeg har nylig hatt muligheten til å oppdatere PC -en som ble brukt med min jammarduino DUE. Selv om jeg hadde testet det med to forskjellige PCer før, brukte de begge ATI -kort fra samme familie (ATI 9250 og 9550). Den nye PC -en var utstyrt med en HD5750 med en enkel DVI -analog utgang (ingen VGA). Dette tvang meg til å bruke en (passiv) DVI til VGA -adapter. Vel, etter litt sliteri la jeg merke til at VGA -kabelen som er koblet til adapteren MÅ bare ha bakken koblet til pin 5 på VGA -kontakten for å fungere, ikke pinner fra 6 til 10 som rapportert i de fleste skjemaer på nettet. Husk dette hvis du ikke kan se noe synkroniseringssignal fra skjermkortet.

Trinn 3: Skisse/kode

Skisse/kode
Skisse/kode

Du må installere Arduino IDE først; du må også installere SAM Cortex M3 Core (ikke til stede som standard). Sist men ikke minst, installer Arduino DUE -drivere. Se den offisielle opplæringen for "Komme i gang med Arduino Due" for den mest oppdaterte informasjonen.

Skissen du må laste opp til din Arduino DUE er vedlagt her. Pakk ut og last "jammarduinoDUE.ino" til deg Arduino IDE, og last deretter opp til arduino DUE via "programmerings" port. Etter at skissen er lastet opp, kobler du USB -kabelen fra "programmerings" -porten og kobler til Arduino DUE via "Native USB" -porten, ellers fungerer ikke inngangsdelen av koden.

I utgangspunktet måler Arduino DUE synkroniseringsfrekvensen og deaktiverer videoforsterkeren når synkroniseringen er for høy for en lavoppløselig CRT. Arduino DUE håndterer også inngangene som kommer fra kontrollpanelet, og sender standard MAME -taster ved bestemt knappetrykk. En skiftfunksjon (aktivert ved å holde P1 START -knappen inne) er også inkludert, som kommersielle grensesnitt.

Standardtastaturet i tabellen. Du kan enkelt endre standardnøkkelkartet eller legge til knapper etter ønske direkte på skissen.

For eksempel, hvis du vil tilordne volumkontrolltaster til emulatoren din, bør du først definere disse tastene (la oss si tastaturet "+" for volum opp og tastaturet "-" for volum ned) i emu-tastemenyen først; legg deretter til skiftetasten til knappene du vil at volumøkningen eller -reduksjonen skal tilordnes. La oss si at jeg vil øke volumet ved å trykke på skift -tasten og spiller 1 -knapp 3. Jeg vil endre linjen

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

til

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

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

Jeg lar deg finne ut hvordan du tilordner "-" (eller hva du foretrekker) til "volum ned" -funksjonen som en øvelse (Hint: ASCII-kode 222):)

Vær oppmerksom på at i MAME kan du bare tilordne servicemodusvolumet, ikke det generelle emuleringsvolumet. Dette betyr at hvis det emulerte kortet ikke tillater volumkontroll av programvare, påvirkes ikke volumet.

Trinn 4: Hva med Input Lag?

Jeg gjorde noen tester for å se hvor mye etterslep koden kunne innføre; vel, ved å sende 3 knapper trykker du samtidig på en fullstendig sløyfe som tar omtrent 4 ms å bli utført, så langt mindre enn de 33 ms en ramme varer med 30 FPS.

Trinn 5: Hva med Jamma Racing Cabinets?

Hva med Jamma Racing Skap?
Hva med Jamma Racing Skap?

Potensiometer hjul

Hvis skapet ditt er et racingskap, er det svært sannsynlig at hjulet er potensiometerbasert (du kan se et 5Kohm potensiometer på baksiden av kontrollpanelet).

Først og fremst må du laste ned og installere joystick -biblioteket (på datoen i dag sies det bare at versjon 1 av biblioteket er kompatibelt med arduino DUE, men det er fortsatt et veldig godt bibliotek).

Deretter legger du til de få linjene som følger til skissen i trinn 4 for å håndtere hjulet enkelt (hvor du skal plassere linjene som er igjen til deg som en øvelse …)

#inkludere

int deadZone = 0;

ugyldig oppsett () {

Joystick.begin ();}

void loop () {

int readPot = analogRead (A3);

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

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

annet {Joystick.setXAxis (0);}

}

Som du kan se, kan du sette en dødsone om nødvendig (i et godt fungerende arkadehjul er det best å sette det til null).

Det er enkelt å koble et potensiometer til Arduino DUE: sidestiftene på potensiometeret går til +3.3V og GND, viskerpinnen til en arduino DUE analog port (se bildet for referanse). Jeg definerte her den analoge pinnen 3 (A3) som inngangen for viskeren på hjulpotensiometeret, men du kan stille inn den analoge pinnen som passer best for dine behov.

PS: vet du at pedaler i racingskap ofte styres av et potensiometer, enn teknisk er hjul og pedaler den samme enheten med en annen form? Dette betyr at koden her også kan brukes til å kontrollere ekte arkadepedaler;)

Optisk hjul

Hvis hjulet ditt er optisk, kan det også enkelt håndteres igjen, med en liten modifikasjon av startskissen.

En veldig vanlig pinout for optiske arkadekodere (Taito -spinnere, Atari -hjulkodere og så videre) er:

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

Koble 2. og 3. til Arduino DUE 5V og GND, og 1. og 4. til en hvilken som helst digital pin du liker å være oppmerksom på at en spenningsdeler er nødvendig for å senke 5V -utgangen fra den optiske encoderen til 3.3V arduino DUE kan håndtere. Ikke send OptoA og/eller OptoB 5V -utganger direkte til dine Arduino DUE -inngangspinner, eller du vil sannsynligvis steke disse inngangene eller til og med hele brettet. Du har blitt advart.

I eksempelskissen her vil jeg bruke digital pin 2 og digital pin 3 som optisk ut A og optisk ut B.

#inkludere

boolsk optA_state = HIGH;

int xAxisMov = 2;

ugyldig oppsett () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mus.begin ();

}

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 koding med lav oppløsning 1X Counting. Det er mer enn tilstrekkelig for Arcade -applikasjoner, men du kan enkelt øke oppløsningen ved å legge til en kodelinje.

PS: vet du at optiske arkadehjul og arkadespinnere teknisk sett er den samme enheten med en annen form? Vet du at styrekuler teknisk sett er en 2 -akset spinner? Dette betyr at koden her kan brukes til å kontrollere ekte arkadespinnere og, med få, enkle endringer også styrekuler;)

Trinn 6: Noen bilder, eller det skjedde ikke

Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!
Noen bilder, eller det skjedde ikke!

Her er noen bilder av skjoldet jeg laget. Det er ikke et arbeid på høyt nivå (ved det, jeg er ikke proff), men det rocker 100% i mitt jamma Arcade Cabinet!

Anbefalt: