Indholdsfortegnelse:
- Trin 1: Hardware
- Trin 2: Skemaer
- Trin 3: Skitse/kode
- Trin 4: Hvad med Input Lag?
- Trin 5: Hvad med Jamma Racing Skabe?
- Trin 6: Nogle billeder, eller det skete ikke
Video: Jammarduino DUE - DIY PC til Jamma -interface til arkadeskabe: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
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
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
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?
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
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:
LoRa Messenger til to enheder til distancer Op til 8 km: 7 trin
LoRa Messenger til to enheder til afstande Op til 8 km: Tilslut projektet til din bærbare computer eller telefon, og chat derefter mellem enhederne uden internet eller SMS ved hjælp af bare LoRa.Hey, hvad sker der gutter? Akarsh her fra CETech. I dag skal vi lave et projekt, der kan forbindes til din smartphone eller en hvilken som helst
1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin
1A til 40A Current BOOST-konverter til op til 1000W DC-motor: Hej! I denne video lærer du, hvordan du laver et strømforstærkerkredsløb til dine høj ampere DC-motorer op til 1000W og 40 ampere med transistorer og en center-tap-transformer. Selvom, strømmen ved udgangen er meget høj, men spændingen bliver r
Tilføjelse af en 24LC256 EEPROM til Arduino Due: 3 trin
Tilføjelse af en 24LC256 EEPROM til Arduino Due: Arduino due mangler en eeprom. Denne instruerbare tilføjer en og giver dig mulighed for at gemme værdier i ikke -flygtig hukommelse, der overlever en arduino -firmwareopdatering
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: Min plan var enkel. Jeg ville skære en væg-drevet LED-lysstreng i stykker og derefter genkoble den til at køre 12 volt. Alternativet var at bruge en strømomformer, men vi ved alle, at de er frygtelig ineffektive, ikke? Ret? Eller er de det?
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): Dette viser dig, hvordan du laver en 12v til USB (5v) adapter. Den mest oplagte anvendelse af dette er til 12v biladaptere, men hvor som helst du har 12v kan du bruge det! Hvis du har brug for 5v til andet end USB, skal du blot springe trinene om tilføjelse af USB -porte over