Taula de continguts:
- Pas 1: maquinari
- Pas 2: esquemes
- Pas 3: esbós / codi
- Pas 4: Què passa amb el retard d'entrada?
- Pas 5: Què passa amb els armaris Jamma Racing?
- Pas 6: algunes fotos, o no van passar
Vídeo: Jammarduino DUE: interfície de bricolatge de PC a Jamma per a armaris Arcade: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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
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
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?
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
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:
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Mesura de distància digital de bricolatge amb interfície de sensor ultrasònic: 5 passos
Mesura de distància digital de bricolatge amb interfície de sensor ultrasònic: l’objectiu d’aquest instructiu és dissenyar un sensor de distància digital amb l’ajut d’un GreenPAK SLG46537. El sistema està dissenyat mitjançant l'ASM i altres components del GreenPAK per interactuar amb un sensor d'ultrasons. El sistema està dissenyat per
Organitzador d’armaris: 13 passos
Organitzador d’armaris: tant si es tracta de comprar roba com si sempre se us demana que demaneu prestat algun article, hi ha vegades que desitgeu que pugueu mirar l’armari des de qualsevol lloc per veure si teniu alguna cosa similar. Això és un sto
ARMARIS: 4 passos
LOCKER: aquest instructiu us mostrarà com es construeix LOCKER, un sistema d’assistència amb RFID i teclat basat en Raspberry Pi. El concepte és simple, escaneja per obrir la porta. En cas que oblideu la targeta, podeu utilitzar el teclat per introduir la vostra contrasenya de 4 dígits
Suport per a portàtils amb armaris d’oficina: 7 passos
El portàtil per a subministraments d’oficina: volia fer un suport per a portàtils a partir de peces i eines que es poguessin trobar a l’armari de subministraments de la vostra oficina típica. Material d’oficina que s’espera que sigui d’un sol ús. Sense femelles ni perns, sense contraxapat, pistoles de cola calenta ni vàlvules de brida Hinkley T-9 (peça # K2