Sommario:
- Passaggio 1: hardware
- Fase 2: Schemi
- Passaggio 3: schizzo/codice
- Passaggio 4: che dire del ritardo di input?
- Passaggio 5: che dire degli armadietti Jamma Racing?
- Passaggio 6: qualche foto o non è successo
Video: Jammarduino DUE - Interfaccia fai-da-te da PC a Jamma per armadi Arcade: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Questo tutorial ti mostrerà come creare un semplice shield per Arduino DUE per interfacciare una vera macchina arcade con CRT a bassa risoluzione e connettore jamma al tuo PC.
Gli scopi principali dello scudo sono:
- amplificare il segnale video in uscita dalla scheda video (tensione troppo bassa per un monitor CRT Arcade originale)
- per proteggere il monitor CRT a bassa risoluzione da segnali di sincronizzazione orizzontale ad alta frequenza
- per "tradurre" le pressioni dei pulsanti sul pannello di controllo arcade in qualcosa che il PC può gestire
Ti mostrerò come estendere l'uso dell'interfaccia per controllare le ruote e gli spinner di Arcade Racing.
Nota: lo shield NON forza il segnale di sincronizzazione video alle basse frequenze: hai bisogno di un software specifico per questo. Ti suggerisco di utilizzare emudrivers CRT o Soft15KHz.
Passaggio 1: hardware
Suppongo che tu abbia una stazione di saldatura e dello stagno a mano e tu sappia come usarli. Essendo l'amplificatore video un SMD con passo 0,65 mm, ti consiglio di acquistare del flusso di saldatura per aiutare a saldare quel microbo. Ho usato una penna economica "no-clean" Rosing Mildly Activated (RMA) con risultati eccellenti.
L'interfaccia è composta da:
- 1x scheda microcontrollore Arduino DUE
- 1x amplificatore video THS7374
- 1x adattatore da TSSOP14 a DIP14
- 1x amplificatore audio
- 1x tastiera jamma
- 1x tavola prototipo 5x7 cm, doppia faccia
- 1x diodo 1N4148
- 7 resistenze da 1Kohm
- 1x resistenza da 820 ohm
- 3 resistenze da 220 ohm
- 1x strip line, spaziatura 2,54 mm
- 1x cavo VGA
- 1x cavo audio
Fase 2: Schemi
Ecco uno schema a colori dell'intero progetto. Non così ortodosso, ma più facile da seguire, nelle mie speranze.
I cablaggi sono facili come sembrano:
- le linee di colore provengono dal connettore VGA del PC all'amplificatore video; un resistore da 1Kohm a terra abbassa la corrente all'ingresso dell'amplificatore video. Sul lato di uscita una resistenza in serie abbassa la corrente al CRT arcade.
- la linea di sincronizzazione è in qualche modo più "complessa": la sincronizzazione separata dalla VGA viene prima composta, quindi abbassata da un partitore di tensione per rispettare le specifiche Arduino DUE (logica 3.3V). Il partitore di tensione viene calcolato assumendo un segnale di sincronizzazione a 5V.
- l'amplificatore video (THS7374) può essere alimentato a 3,3V o 5V; essendo che l'alimentazione a 5 V consente una gamma più ampia di tensioni/segnali di ingresso ed essendo che THS7374 può essere controllato da 3,3 V anche se alimentato a 5 V, sono andato nel modo 5V.
- la massa video, la massa arduino DUE, la massa THS7374 e la massa del connettore jamma sono in cortocircuito.
- Le linee Arduino DUE 5V e Jamma 5V NON DEVONO ESSERE IN CORTO CIRCUITO.
- NON estrarre l'amplificatore audio dal cavo USB: è necessaria una sorgente esterna per questo a causa dei limiti di corrente (ad esempio l'alimentatore ATX del PC). In questo modo danneggerai la tua porta USB o persino il tuo PC.
Connettore VGA: una parola di cautela
Recentemente ho avuto modo di aggiornare il PC utilizzato con il mio jammarduino DUE. Anche se l'avevo già testato con due PC diversi, entrambi utilizzavano schede ATI della stessa famiglia (ATI 9250 e 9550). Il nuovo PC era dotato di un HD5750 con una singola uscita analogica DVI (no VGA). Questo mi ha costretto a utilizzare un adattatore (passivo) da DVI a VGA. Bene, dopo un po' di difficoltà ho notato che il cavo VGA collegato all'adattatore DEVE avere solo la massa collegata al pin 5 del connettore VGA per funzionare, non i pin da 6 a 10 come riportato nella maggior parte degli schemi sul web. Tienilo a mente nel caso in cui non riesci a vedere alcun segnale di sincronizzazione dalla tua scheda video.
Passaggio 3: schizzo/codice
Devi prima installare Arduino IDE; è necessario installare anche il SAM Cortex M3 Core (non presente di default). Ultimo ma non meno importante, installa i driver Arduino DUE. Fare riferimento al tutorial ufficiale "Introduzione ad Arduino Due" per le informazioni più aggiornate.
Lo schizzo che devi caricare sul tuo Arduino DUE è qui allegato. Decomprimi e carica "jammarduinoDUE.ino" sul tuo Arduino IDE, quindi carica su arduino DUE tramite la porta di "programmazione". Dopo che lo sketch è stato caricato con successo, scollegare il cavo USB dalla porta di "programmazione" e collegare Arduino DUE tramite la porta "Native USB", altrimenti la parte di input del codice non funzionerà.
Fondamentalmente, Arduino DUE misura la frequenza di sincronizzazione e disabilita l'amplificatore video quando la sincronizzazione è troppo alta per un CRT a bassa risoluzione. Arduino DUE gestisce anche gli input provenienti dal pannello di controllo, inviando i tasti MAME predefiniti alla pressione di un pulsante specifico. E' inclusa anche una funzione shift (attivabile tenendo premuto il tasto P1 START), come le interfacce commerciali.
Nella tabella la keymap predefinita. Puoi modificare facilmente la mappa dei tasti predefinita o aggiungere pulsanti a tuo piacimento direttamente sullo schizzo.
Ad esempio, se vuoi assegnare i tasti di controllo del volume per il tuo emulatore, dovresti prima definire quei tasti (diciamo il tastierino "+" per aumentare il volume e il tastierino "-" per abbassare il volume) nel menu dei tasti emu; quindi aggiungi il tasto shift ai pulsanti a cui vuoi assegnare l'aumento o la diminuzione del volume. Diciamo che voglio aumentare il volume premendo il tasto Maiusc e il pulsante Player 1 3. Modificherò la linea
{26, ALTO, 0, 180, 180}, //spazio - P1 B3
a
{26, ALTO, 0, 180, 223}, //spazio - P1 B3 (+)
Quel "223" è il codice carattere ASCII per la tastiera "+".
Ti farò capire come assegnare il "-" (o quello che preferisci) alla funzione "riduci volume" come esercizio (Suggerimento: codice ASCII 222):)
Tieni presente che in MAME puoi assegnare solo il volume della modalità di servizio, non il volume di emulazione generale; ciò significa che se la scheda emulata non consente il controllo del volume del software, il volume non verrà modificato.
Passaggio 4: che dire del ritardo di input?
Ho fatto alcuni test per vedere quanto lag potrebbe introdurre il codice; bene, inviando 3 pulsanti premuti contemporaneamente, un ciclo completo impiega circa 4 ms per essere eseguito, quindi molto meno dei 33 ms che un frame dura a 30 FPS.
Passaggio 5: che dire degli armadietti Jamma Racing?
Potenziometro Ruota
Se il tuo cabinet è un cabinet da corsa, è molto probabile che il volante sia basato su un potenziometro (puoi vedere un potenziometro da 5Kohm nella parte posteriore del pannello di controllo).
Per prima cosa, scarica e installa la libreria Joystick (alla data odierna si dice che solo la versione 1 della libreria sia compatibile con arduino DUE, ma è comunque un'ottima libreria).
Quindi, aggiungi le poche linee che seguono allo schizzo nel passaggio 4 per maneggiare facilmente la ruota (dove posizionare le linee è lasciato a te come esercizio…)
#includere
int deadZone = 0;
void setup() {
Joystick.begin();}
ciclo vuoto() {
int readPot = analogRead(A3);
int wheelPos = map(readPot, 0, 1023, -127, 127);
if(wheelPos>deadZone || wheelPos<-deadZone){ Joystick.setXAxis(wheelPos);}
else {Joystick.setXAxis(0);}
}
Come puoi vedere, puoi impostare una zona morta se necessario (in un buon volante arcade funzionante è meglio impostarlo a zero).
Il cablaggio di un potenziometro ad Arduino DUE è semplice: i pin laterali del potenziometro vanno a +3,3 V e GND, il pin del tergicristallo a una porta analogica arduino DUE (vedi l'immagine per riferimento). Ho definito qui il pin analogico 3 (A3) come ingresso per il tergicristallo del potenziometro ruota, ma puoi impostare il pin analogico più adatto alle tue esigenze.
PS: lo sai che i pedali nei cabinati da corsa sono spesso controllati da un potenziometro, che tecnicamente ruote e pedali sono lo stesso dispositivo con una forma diversa? Ciò significa che il codice qui potrebbe essere utilizzato anche per controllare i pedali arcade originali;)
Ruota ottica
Se la tua ruota è ottica, può essere facilmente gestita anche in questo caso, con una piccola modifica allo schizzo iniziale.
Un pinout molto comune per gli encoder ottici Arcade (spinner Taito, encoder per ruote Atari e così via) è:
1. Uscita OptoA
2. +5V
3. GND
4. Uscita OptoB
Collega 2. e 3. ad Arduino DUE 5V e GND e 1. e 4. a qualsiasi pin digitale che ti piace prestando attenzione che è necessario un partitore di tensione per abbassare l'uscita 5V dall'encoder ottico all'arduino DUE da 3,3 V in grado di gestire. Non inviare le uscite OptoA e/o OptoB 5V direttamente ai pin di ingresso del tuo arduino DUE o probabilmente friggerai quegli ingressi o addirittura l'intera scheda. Sei stato avvertito.
Nello schizzo di esempio qui userò il pin digitale 2 e il pin digitale 3 come uscita ottica A e uscita ottica B.
#includere
booleano optA_state = HIGH;
int xAxisMov = 2;
void setup() {
pinMode (2, INPUT_PULLUP); //OptA
pinMode (3, INPUT_PULLUP); //OptB
Mouse.begin();
}
ciclo vuoto() {
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);} } }//fine ciclo
Questa è una codifica ottica di conteggio 1X a bassa risoluzione. È più che sufficiente per le applicazioni Arcade, ma puoi aumentare facilmente la risoluzione aggiungendo qualche riga di codice.
PS: lo sai che le ruote ottici arcade e gli spinner arcade sono tecnicamente lo stesso dispositivo con una forma diversa? Sai che le trackball sono tecnicamente uno spinner a 2 assi? Ciò significa che il codice qui potrebbe essere utilizzato per controllare i veri spinner arcade e, con poche, facili modifiche anche le trackball;)
Passaggio 6: qualche foto o non è successo
Ecco alcune immagini dello scudo che ho realizzato. Non è un lavoro di alto livello (scommetto che non sono un professionista), ma è rock al 100% nel mio Jamma Arcade Cabinet!
Consigliato:
Fai da te un giradischi con due motori: 10 passaggi (con immagini)
Fai da te un giradischi con due motori: all'inizio, voglio sempre avere un giradischi da tiro, e recentemente ho scoperto che c'erano due motoriduttori inattivi. Quindi, mi chiedevo se potevo fare un giradischi con loro. Senza ulteriori indugi, ci proverò! Principio: la riduzione r
Piatto per acqua riscaldato fai-da-te fai-da-te/sicuro per animali domestici: 7 passaggi
Piatto per acqua riscaldato fai-da-te fai-da-te/sicuro per animali domestici: così tieni un cane/coniglio/gatto/… fuori e la loro acqua continua a gelare in inverno. Ora normalmente li porteresti dentro o compreresti un piatto d'acqua riscaldato, ma questo animale probabilmente puzza, non hai la stanza e non puoi permetterti di pagare $ 4
HX1-DM - la drum machine fai-da-te alimentata con Arduino DUE riciclata (realizzata con una Dead Maschine MK2): 4 passaggi
HX1-DM - la drum machine fai-da-te alimentata Arduino DUE upcycled (realizzata con una Dead Maschine MK2): le specifiche. Controller Midi ibrido / drum machine: Arduino DUE powered! 16 pad di rilevamento della velocità con latenza molto bassa 1>ms 8 manopole assegnabili dall'utente a qualsiasi comando Midi #CC Sequencer incorporato a 16 canali (nessun computer necessario!!) Funzione MIDI in/out/thru
Tavolino da caffè Arcade per due giocatori RasPi: 7 passaggi (con immagini)
Tavolino da caffè Arcade per due giocatori RasPi: ecco la mia versione del tavolino da caffè arcade Raspberry Pi. Ho avuto l'idea da altri fantastici istruttori qui e volevo condividere la mia esperienza con la build. Il tavolo può giocare a giochi di più epoche di videogiochi tra cui NES, SNES, Sega, Play
LoRa Messenger per due dispositivi per distanze fino a 8 km: 7 passaggi
LoRa Messenger per due dispositivi per distanze fino a 8 km: collega il progetto al tuo laptop o telefono e poi chatta tra i dispositivi senza Internet o SMS usando solo LoRa. Ehi, che succede ragazzi? Akarsh qui da CETech. Oggi realizzeremo un progetto che può essere collegato al tuo smartphone o a qualsiasi