Inhoudsopgave:
- Stap 1: Hardware
- Stap 2: Schema's
- Stap 3: Schets/code
- Stap 4: Hoe zit het met de invoervertraging?
- Stap 5: Hoe zit het met Jamma Racing-kasten?
- Stap 6: Sommige foto's, of het is niet gebeurd
Video: Jammarduino DUE - DIY-pc naar Jamma-interface voor arcadekasten - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
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
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
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?
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
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:
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Games uploaden naar Arduboy en 500 games naar Flash-cart: 8 stappen
Spellen uploaden naar Arduboy en 500 spellen naar Flash-cart: Ik heb een zelfgemaakte Arduboy gemaakt met serieel Flash-geheugen dat maximaal 500 spellen kan opslaan om onderweg te spelen. Ik hoop te delen hoe je games kunt laden, inclusief hoe je games opslaat in het seriële flash-geheugen en je eigen geconsolideerde gamepakket kunt maken
Flash AT Command Firmware naar ESP01-module (vereist een USB-naar-TTL-adapter): 5 stappen
Flash AT Command Firmware naar ESP01-module (vereist een USB-naar-TTL-adapter): door Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
Overtuig uzelf om gewoon een 12V-naar-AC-lijnomvormer te gebruiken voor LED-lichtsnoeren in plaats van ze opnieuw te bedraden voor 12V: 3 stappen
Overtuig uzelf om gewoon een 12V-naar-AC-lijnomvormer te gebruiken voor LED-lichtsnoeren in plaats van ze opnieuw te bedraden voor 12V.: Mijn plan was eenvoudig. Ik wilde een door de muur aangedreven LED-lichtsnoer in stukken knippen en vervolgens opnieuw bedraden om 12 volt te laten lopen. Het alternatief was om een omvormer te gebruiken, maar we weten allemaal dat ze vreselijk inefficiënt zijn, toch? Rechts? Of zijn ze?
12v naar USB-adapter 12v naar 5v transformator (ideaal voor auto's): 6 stappen
12v naar USB-adapter 12v naar 5v-transformator (ideaal voor auto's): hier wordt uitgelegd hoe u een 12v-naar-USB (5v)-adapter maakt. Het meest voor de hand liggende gebruik hiervan is voor 12v-autoadapters, maar overal waar je 12v hebt, kun je het gebruiken! Als je 5v nodig hebt voor iets anders dan USB, sla dan gewoon de stappen over het toevoegen van de USB-poorten over