Inhoudsopgave:

Jammarduino DUE - DIY-pc naar Jamma-interface voor arcadekasten - Ajarnpa
Jammarduino DUE - DIY-pc naar Jamma-interface voor arcadekasten - Ajarnpa

Video: Jammarduino DUE - DIY-pc naar Jamma-interface voor arcadekasten - Ajarnpa

Video: Jammarduino DUE - DIY-pc naar Jamma-interface voor arcadekasten - Ajarnpa
Video: Build a Desktop Arcade Machine with Raspberry Pi 3 and Retropie: Super Turbo Pro Edition 2024, December
Anonim
Jammarduino DUE - DIY PC naar Jamma Interface voor arcadekasten
Jammarduino DUE - DIY PC naar Jamma Interface voor arcadekasten

Deze instructable laat je zien hoe je een eenvoudig schild voor Arduino DUE kunt maken om een echte arcade-machine met een lage resolutie CRT en jamma-connector op je pc aan te sluiten.

De belangrijkste gietvormen van het schild zijn:

- om het videosignaal dat van de videokaart komt te versterken (te lage spanning voor een echte Arcade CRT-monitor)

- om uw CRT-monitor met lage resolutie te beschermen tegen horizontale synchronisatiesignalen met een te hoge frequentie

- om knopdrukken op het arcade-bedieningspaneel te "vertalen" naar iets dat de pc aankan

Ik zal je laten zien hoe je het gebruik van de interface kunt uitbreiden om Arcade Racing-wielen en spinners te besturen.

Let op: het schild forceert het videosynchronisatiesignaal NIET naar lage frequenties: daar heb je specifieke software voor nodig. Ik raad je aan om CRT emudrivers of Soft15KHz te gebruiken.

Stap 1: Hardware

Ik neem aan dat je een soldeerstation en wat tin met de hand hebt en dat je weet hoe je ze moet gebruiken. Omdat de videoversterker een SMD is met een pitch van 0,65 mm, raad ik je aan om wat soldeervloeimiddel te kopen om die microbe te helpen solderen. Ik gebruikte een goedkope "no-clean" Rosing Mildly Activated (RMA) pen met uitstekende resultaten.

De interface is opgebouwd uit:

- 1x Arduino DUE-microcontrollerkaart

- 1x THS7374 videoversterker

- 1x TSSOP14 naar DIP14-adapter

- 1x audioversterker

- 1x jamma toets

- 1x 5x7 cm prototype bord, dubbelzijdig

- 1x 1N4148 diode

- 7x 1Kohm weerstanden

- 1x 820 ohm weerstand

- 3x 220 ohm weerstand

- 1x striplijn, 2,54 mm tussenruimte

- 1x VGA-kabel

- 1x audiokabel

Stap 2: Schema's

Schema's
Schema's

Hier is een kleurenschema van het hele project. Niet zo orthodox, maar naar mijn hoop gemakkelijker te volgen.

Bedrading is net zo eenvoudig als ze eruitzien:

- kleurlijnen komen van de PC VGA-connector naar de videoversterker; een weerstand van 1 Kohm naar aarde verlaagt de stroom naar de ingang van de videoversterker. Aan de uitgangszijde verlaagt een serieweerstand de stroom naar de arcade CRT.

- sync-lijn is op de een of andere manier "complexer": afzonderlijke synchronisatie van de VGA wordt eerst samengesteld en vervolgens verlaagd door een spanningsdeler om de Arduino DUE-specificaties te respecteren (logica van 3,3 V). De spanningsdeler wordt berekend uitgaande van een 5V sync-signaal.

- videoversterker (THS7374) kan worden gevoed met 3,3 V of 5 V; omdat het voeden op 5V een breder scala aan ingangsspanningen / signalen mogelijk maakt en omdat THS7374 kan worden bestuurd door 3,3V, zelfs als het op 5V wordt geperst, ging ik de 5V-weg in.

- video-aarde, arduino DUE-aarde, THS7374-aarde en jamma-connectoraarde zijn kortgesloten.

- Arduino DUE 5V- en Jamma 5V-lijnen MOETEN GEEN KORTSLUITING WORDEN.

- Haal de audioversterker NIET uit de USB-kabel: daarvoor heb je een externe bron nodig vanwege stroomlimieten (d.w.z. de PC ATX PSU). Als u dat doet, beschadigt u uw USB-poort of zelfs uw pc.

VGA-connector: een waarschuwing:

Ik heb onlangs de gelegenheid gehad om de pc die met mijn jammarduino DUE wordt gebruikt, bij te werken. Zelfs als ik het eerder met twee verschillende pc's had getest, gebruikten ze allebei ATI-kaarten van dezelfde familie (ATI 9250 en 9550). De nieuwe pc was uitgerust met een HD5750 met een enkele DVI analoge uitgang (geen VGA). Hierdoor moest ik een (passieve) DVI naar VGA adapter gebruiken. Nou, na wat worstelen merkte ik dat de VGA-kabel die op de adapter is aangesloten, alleen de aarde op pin 5 van de VGA-connector MOET hebben om te werken, niet de pinnen van 6 tot 10 zoals vermeld in de meeste schema's op internet. Houd hier rekening mee voor het geval u geen synchronisatiesignaal uit uw videokaart kunt zien.

Stap 3: Schets/code

Schets/Code
Schets/Code

Je moet eerst Arduino IDE installeren; u moet ook de SAM Cortex M3 Core installeren (standaard niet aanwezig). Last but not least, installeer Arduino DUE-stuurprogramma's. Raadpleeg de officiële tutorial "Aan de slag met Arduino Due" voor de meest actuele informatie.

De schets die u naar uw Arduino DUE moet uploaden, is hier bijgevoegd. Pak uit en laad "jammarduinoDUE.ino" naar je Arduino IDE, upload vervolgens naar Arduino DUE via de "programmeer" -poort. Nadat de schets met succes is geüpload, koppelt u de USB-kabel los van de "programmeer" -poort en sluit u Arduino DUE aan via de "Native USB" -poort, anders zal het invoergedeelte van de code niet werken.

Kortom, Arduino DUE meet de synchronisatiefrequentie en schakelt de videoversterker uit wanneer de synchronisatie te hoog is voor een lage resolutie CRT. Arduino DUE verwerkt ook de invoer die van het bedieningspaneel komt en verzendt standaard MAME-toetsen bij het indrukken van een specifieke knop. Een shift-functie (geactiveerd door de P1 START-knop ingedrukt te houden) is ook inbegrepen, net als commerciële interfaces.

In de tabel de standaard keymap. U kunt de standaard keymap naar wens wijzigen of eenvoudig knoppen toevoegen aan de schets.

Als u bijvoorbeeld volumetoetsen voor uw emulator wilt toewijzen, moet u eerst die toetsen definiëren (bijvoorbeeld toetsenbord "+" voor volume omhoog en toetsenbord "-" voor volume omlaag) in uw emu-toetsenmenu; voeg vervolgens de verschoven toets toe aan de knoppen waaraan u het volume wilt verhogen of verlagen. Laten we zeggen dat ik het volume wil verhogen door op de shift-toets en speler 1 knop 3 te drukken. Ik zal de regel aanpassen

{26, HOOG, 0, 180, 180}, // spatie - P1 B3

tot

{26, HOOG, 0, 180, 223}, //spatie - P1 B3 (+)

Die "223" is de ASCII-tekencode voor toetsenbord "+".

Ik zal je laten uitzoeken hoe je de "-" (of wat je maar wilt) toewijst aan de "volume omlaag" -functie als een oefening (Hint: ASCII-code 222):)

Houd er rekening mee dat u in MAME alleen het volume van de servicemodus kunt toewijzen, niet het algemene emulatievolume; dit betekent dat als het geëmuleerde bord geen softwarematige volumeregeling toestaat, het volume niet wordt beïnvloed.

Stap 4: Hoe zit het met de invoervertraging?

Ik heb wat tests gedaan om te zien hoeveel vertraging de code kon introduceren; Nou, door 3 knoppen tegelijkertijd in te drukken, duurt het ongeveer 4 ms om een volledige lus uit te voeren, dus veel minder dan de 33 ms duurt een frame bij 30 FPS.

Stap 5: Hoe zit het met Jamma Racing-kasten?

Hoe zit het met Jamma Racing-kasten?
Hoe zit het met Jamma Racing-kasten?

Potentiometerwiel

Als uw kast een racekast is, is het zeer waarschijnlijk dat het stuur op een potentiometer is gebaseerd (u kunt een potentiometer van 5 Kohm aan de achterkant van het bedieningspaneel zien).

Download en installeer eerst de Joystick-bibliotheek (op de datum van vandaag zou alleen versie 1 van de bibliotheek compatibel zijn met arduino DUE, maar het is nog steeds een zeer goede bibliotheek).

Voeg vervolgens de paar lijnen die volgen toe aan de schets in stap 4 om het wiel gemakkelijk te kunnen hanteren (waar u de lijnen moet plaatsen, wordt aan u overgelaten als oefening…)

#erbij betrekken

int dode zone = 0;

ongeldige setup() {

Joystick.begin();}

lege lus() {

int readPot = analoogRead(A3);

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

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

anders {Joystick.setXAxis(0);}

}

Zoals je kunt zien, kun je indien nodig een dode zone instellen (in een goed werkend arcadewiel kun je deze het beste op nul zetten).

Een potentiometer aansluiten op Arduino DUE is eenvoudig: zijpinnen van de potentiometer gaan naar +3.3V en GND, wisserpen naar een Arduino DUE analoge poort (zie de foto ter referentie). Ik definieerde hier de analoge pin 3 (A3) als ingang voor de wisser van de wielpotentiometer, maar je kunt de analoge pin instellen die het beste bij je past.

PS: weet je dat pedalen in racekasten vaak worden aangestuurd door een potentiometer, dan technisch gezien zijn wielen en pedalen hetzelfde apparaat met een andere vorm? Dit betekent dat de code hier ook kan worden gebruikt om echte arcade-pedalen te bedienen;)

Optisch wiel

Als je wiel optisch is, kan het ook gemakkelijk worden gehanteerd, nogmaals, met een kleine aanpassing aan de startschets.

Een veel voorkomende pinout voor optische Arcade-encoders (Taito-spinners, Atari-wielen-encoders enzovoort) is:

1. OptoA OUT

2. +5V

3. GND

4. OptoB UIT

Sluit 2. en 3. aan op Arduino DUE 5V en GND, en 1. en 4. op elke digitale pin die u leuk vindt, let erop dat een spanningsdeler nodig is om de 5V-uitgang van de optische encoder te verlagen naar de 3.3V arduino DUE. Stuur geen OptoA- en/of OptoB 5V-uitgangen rechtstreeks naar je arduino DUE-ingangspinnen, anders zul je waarschijnlijk die ingangen of zelfs het hele bord bakken. Je bent gewaarschuwd.

In de voorbeeldschets hier zal ik digitale pin 2 en digitale pin 3 gebruiken als optisch uit A en optisch uit B.

#erbij betrekken

boolean optA_state = HOOG;

int xAxisMov = 2;

ongeldige setup() {

pinMode (2, INPUT_PULLUP); //OptA

pinMode (3, INPUT_PULLUP); //OptB

Muis.begin();

}

lege lus() {

if (optA_state == HOOG && digitalRead (2) == LAAG){

optA_state=!optA_state;

if(digitalRead(3) == HIGH){ Mouse.move(xAxisMov, 0, 0);} else{Mouse.move(-xAxisMov, 0, 0);} } }//loop end

Dit is een 1X Counting optische codering met lage resolutie. Het is meer dan voldoende voor Arcade-toepassingen, maar je kunt de resolutie eenvoudig verhogen door een regel code toe te voegen.

PS: weet je dat optische arcade-wielen en arcade-spinners technisch hetzelfde apparaat zijn met een andere vorm? Weet u dat trackballs technisch gezien een 2-assige spinner zijn? Dit betekent dat de code hier kan worden gebruikt om echte arcade-spinners te besturen en, met weinig eenvoudige aanpassingen, ook trackballs;)

Stap 6: Sommige foto's, of het is niet gebeurd

Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!
Sommige Pic, of het is niet gebeurd!

Hier zijn enkele foto's van het schild dat ik heb gemaakt. Het is geen werk van hoog niveau (wed maar, ik ben geen pro), maar het rockt 100% in mijn jamma Arcade Cabinet!

Aanbevolen: