Taula de continguts:

Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade: 6 passos
Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade: 6 passos

Vídeo: Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade: 6 passos

Vídeo: Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade: 6 passos
Vídeo: iPhone Introducing❓ Steve Jobs in 2007❕ #part6 (Full Subtitle) 2024, De novembre
Anonim
Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade
Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade

Aquesta instrucció us mostrarà com crear un escut simple per a Arduino DUE per connectar una màquina arcade genuïna amb CRT de baixa resolució i connector jamma al vostre PC.

Els objectes principals de l’escut són:

- per amplificar el senyal de vídeo que surt de la targeta de vídeo (massa baixa tensió per a un monitor ArcT CRT genuí)

- per protegir el vostre monitor CRT de baixa resolució de senyals de sincronització horitzontal massa freqüents

- per "traduir" el botó prem el tauler de control arcade a alguna cosa que el PC pot gestionar

Us mostraré com ampliar l’ús de la interfície per controlar les rodes i els filadors d’Arcade Racing.

Avís: l’escut NO força el senyal de sincronització de vídeo a freqüències baixes: necessiteu algun programari específic per a això. Us proposo que utilitzeu emudrivers CRT o Soft15KHz.

Pas 1: maquinari

Suposaré que teniu una estació de soldadura i una mica de llauna a mà i que en sabreu utilitzar. Com que l'amplificador de vídeo és un SMD amb un pas de 0,65 mm, us suggereixo que adquiriu un flux de soldadura per ajudar a soldar aquest microbi. Vaig utilitzar un bolígraf Rosing Mildly Activated (RMA) "no net" barat amb excel·lents resultats.

La interfície es compon de:

- 1 placa de microcontrolador Arduino DUE

- 1x amplificador de vídeo THS7374

- 1x adaptador TSSOP14 a DIP14

- 1x amplificador d'àudio

- 1 teclat jamma

- Tauler prototip 1x 5x7 cm, doble cara

- 1x díode 1N4148

- Resistències 7x 1Kohm

- Resistència 1x 820 ohm

- Resistència de 3x 220 ohm

1 línia de tires, espaiat de 2,54 mm

- 1x cable VGA

1x cable d'àudio

Pas 2: esquemes

Esquemes
Esquemes

Aquí teniu un esquema de colors del projecte integral. No és tan ortodox, però és més fàcil de seguir, amb les meves esperances.

Els cablejats són tan fàcils com es veuen:

- les línies de color provenen del connector PC VGA a l'amplificador de vídeo; una resistència de 1 Kohm a terra redueix el corrent a l'entrada de l'amplificador de vídeo. Al costat de sortida, una resistència en sèrie redueix el corrent a la arcade CRT.

- la línia de sincronització és d'alguna manera més "complexa": la sincronització separada de la VGA es fa composta, primer, després es redueix mitjançant un divisor de voltatge per respectar les especificacions Arduino DUE (lògica de 3,3 V). El divisor de tensió es calcula assumint un senyal de sincronització de 5V.

- l'amplificador de vídeo (THS7374) es podria alimentar a 3,3V o 5V; sent que l'alimentació a 5 V permet una gamma més àmplia de voltatges / senyals d'entrada i que THS7374 es pot controlar per 3,3 V, fins i tot si es juga a 5 V, vaig seguir el camí de 5 V.

- La massa de vídeo, la terra DUE arduino, la terra THS7374 i la massa del connector jamma estan curtcircuitades.

- Les línies Arduino DUE 5V i Jamma 5V NO HAN DE SER CIRCUITES BREU.

- NO treieu l’amplificador d’àudio del cable USB: necessiteu una font externa a causa dels límits de corrent (és a dir, la PC ATX PSU). Fent això, danyareu el port USB o fins i tot el PC.

Connector VGA: precaució

Recentment he tingut l'oportunitat d'actualitzar el PC utilitzat amb el meu jammarduino DUE. Fins i tot si l’hagués provat abans amb dos PC diferents, tots dos feien servir targetes ATI de la mateixa família (ATI 9250 i 9550). El nou PC estava equipat amb un HD5750 amb una única sortida analògica DVI (sense VGA). Això em va obligar a utilitzar un adaptador (passiu) de DVI a VGA. Bé, després d'algunes dificultats, vaig notar que el cable VGA connectat a l'adaptador només ha de tenir la terra connectada al pin 5 del connector VGA perquè funcioni, no els pins de 6 a 10, tal com s'indica a la majoria d'esquemes de la web. Tingueu-ho en compte per si no veieu cap senyal de sincronització a la targeta de vídeo.

Pas 3: esbós / codi

Esbós / Codi
Esbós / Codi

Primer heu d’instal·lar Arduino IDE; també heu d’instal·lar el SAM Cortex M3 Core (no està present per defecte). Finalment, instal·leu els controladors Arduino DUE. Consulteu el tutorial oficial "Introducció a Arduino Due" per obtenir la informació més actualitzada.

Aquí s’adjunta l’esbós que heu de penjar al vostre Arduino DUE. Descomprimiu i carregueu "jammarduinoDUE.ino" a l'IDE Arduino i, a continuació, pengeu-lo a arduino DUE mitjançant el port de "programació". Després de carregar l'esbós amb èxit, desconnecteu el cable USB del port de "programació" i connecteu Arduino DUE mitjançant el port "USB natiu" o la part d'entrada del codi no funcionarà.

Bàsicament, Arduino DUE mesura la freqüència de sincronització i desactiva l'amplificador de vídeo quan la sincronització és massa alta per obtenir un CRT de baixa resolució. Arduino DUE també gestiona les entrades que provenen del tauler de control, enviant les tecles MAME per defecte en prémer un botó específic. També s’inclou una funció de canvi (activada mantenint premut el botó P1 START), com les interfícies comercials.

A la taula, el mapa de tecles per defecte. Podeu canviar el mapa de tecles per defecte o afegir botons a la vostra voluntat directament a l’esbós.

Per exemple, si voleu assignar tecles de control de volum per al vostre emulador, primer heu de definir aquestes tecles (diguem, per exemple, el teclat "+" per augmentar el volum i el teclat "-" per baixar el volum) al menú de les tecles emu; a continuació, afegiu la tecla desplaçada als botons als quals vulgueu assignar l'augment o la disminució del volum. Diguem que vull augmentar el volum prement la tecla Maj i el botó Reproductor 1 3. Modificaré la línia

{26, HIGH, 0, 180, 180}, // espai: P1 B3

a

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

Aquest "223" és el codi de caràcters ASCII del teclat "+".

Us deixaré esbrinar com assignar el "-" (o el que preferiu) a la funció "baixar el volum" com a exercici (Consell: codi ASCII 222):)

Tingueu en compte que a MAME només podeu assignar el volum del mode de servei, no el volum d’emulació general; això significa que si la placa emulada no permet controlar el volum del programari, el volum no es veurà afectat.

Pas 4: Què passa amb el retard d'entrada?

Vaig fer algunes proves per veure quant de retard podria introduir el codi; bé, enviant 3 botons, premeu al mateix temps que un bucle complet triga uns 4 ms a executar-se, fins ara menys dels 33 ms que dura un fotograma a 30 FPS.

Pas 5: Què passa amb els armaris Jamma Racing?

Què passa amb els armaris Jamma Racing?
Què passa amb els armaris Jamma Racing?

Roda de potenciòmetre

Si el vostre armari és un armari de carreres, és molt probable que la roda estigui basada en un potenciòmetre (podeu veure un potenciòmetre de 5 Kohm a la part posterior del tauler de control).

Primer de tot, descarregueu i instal·leu la biblioteca Joystick (a la data d’avui només es diu que la versió 1 de la biblioteca és compatible amb arduino DUE, però continua sent una biblioteca molt bona).

A continuació, afegiu les poques línies que segueixen a l'esbós del pas 4 per manejar la roda fàcilment (on col·loqueu les línies que us quedin com a exercici …)

#incloure

int deadZone = 0;

configuració nul·la () {

Joystick.begin ();}

bucle buit () {

int readPot = analogRead (A3);

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

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

else {Joystick.setXAxis (0);}

}

Com podeu veure, podeu establir una zona morta si cal (en una bona roda arcade que funcioni és millor posar-la a zero).

El cablejat d’un potenciòmetre a Arduino DUE és senzill: els passadors laterals del potenciòmetre van a + 3,3 V i GND, el passador del netejador a un port analògic arduino DUE (vegeu la foto per a referència). He definit aquí el pin analògic 3 (A3) com a entrada per al netejador del potenciòmetre de la roda, però podeu configurar el pin analògic que millor s’adapti a les vostres necessitats.

PD: sabeu que els pedals dels armaris de carreres sovint es controlen mitjançant un potenciòmetre, que tècnicament les rodes i els pedals són el mateix dispositiu amb una forma diferent? Això significa que el codi aquí també es podria utilitzar per controlar pedals arcade genuïns;)

Roda òptica

Si la roda és òptica, també es pot manipular fàcilment, de nou, amb una petita modificació a l'esbós inicial.

Un pinout molt comú per als codificadors òptics Arcade (filadors de Taito, codificadors de rodes Atari, etc.) és:

1. OptoA OUT

2. + 5V

3. GND

4. OptoB OUT

Connecteu 2. i 3. a Arduino DUE 5V i GND, i 1. i 4. a qualsevol pin digital que vulgueu prestar atenció que sigui necessari un divisor de tensió per baixar la sortida de 5V del codificador òptic al 3,3V arduino DUE.. No envieu sortides OptoA i / o OptoB 5V directament als pins d’entrada DUE d’arduino o és probable que fregueu aquestes entrades o fins i tot la placa sencera. Has estat avisat.

A l'esbós d'exemple aquí utilitzaré el pin digital 2 i el pin digital 3 com a sortida òptica A i sortida òptica B.

#incloure

booleà optA_state = HIGH;

int xAxisMov = 2;

configuració nul·la () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mouse.begin ();

}

bucle buit () {

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);}}} // final del bucle

Es tracta d’una codificació òptica de comptatge 1X de baixa resolució. És més que suficient per a les aplicacions Arcade, però podeu augmentar la resolució fàcilment afegint una línia de codi.

PD: sabeu que les rodes d'arcade òptic i els filadors d'arcade són tècnicament el mateix dispositiu amb una forma diferent? Sabeu que les pilotes de pistes són tècnicament un filador de 2 eixos? Això significa que el codi aquí es podria utilitzar per controlar autèntics filadors d'arcade i, amb poques modificacions fàcils, també les boles de seguiment;)

Pas 6: algunes fotos, o no van passar

Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!
Alguna foto, o no va passar!

Aquí teniu algunes imatges de l’escut que vaig fer. No és un treball d’alt nivell (aposta, no sóc professional), però és 100% basculant al meu Jamma Arcade Cabinet.

Recomanat: