Jammarduino DUE - Rozhraní PC -Jamma pro arkádové skříně: 6 kroků
Jammarduino DUE - Rozhraní PC -Jamma pro arkádové skříně: 6 kroků
Anonim
Jammarduino DUE - DIY rozhraní pro rozhraní Jamma pro arkádové skříně
Jammarduino DUE - DIY rozhraní pro rozhraní Jamma pro arkádové skříně

Tento návod vám ukáže, jak vytvořit jednoduchý štít pro Arduino DUE pro propojení skutečného arkádového stroje s CRT s nízkým rozlišením a konektorem jamma s vaším počítačem.

Hlavní toky štítu jsou:

- pro zesílení video signálu vycházejícího z grafické karty (příliš nízké napětí pro skutečný monitor Arcade CRT)

- k ochraně monitoru CRT s nízkým rozlišením před příliš vysokofrekvenčními signály horizontální synchronizace

- „přeložit“stisknutí tlačítka na arkádovém ovládacím panelu na něco, co počítač zvládne

Ukážu vám, jak rozšířit rozhraní k ovládání kol a rozmetačů Arcade Racing.

Upozornění: štít NENUTÍ signál synchronizace videa na nízké frekvence: potřebujete k tomu nějaký konkrétní software. Doporučuji použít emulátory CRT nebo Soft15KHz.

Krok 1: Hardware

Budu předpokládat, že máte pájecí stanici a nějaký cín ručně a víte, jak je používat. Vzhledem k tomu, že video zesilovač je SMD s roztečí 0,65 mm, doporučuji vám zakoupit nějaký pájecí tok, který pomůže pájení tohoto mikroba. Použil jsem levné „nečištěné“pero Rosing Mildly Activated (RMA) s vynikajícími výsledky.

Rozhraní se skládá z:

- 1x deska mikrokontroléru Arduino DUE

- 1x video zesilovač THS7374

- 1x adaptér TSSOP14 na DIP14

- 1x audio zesilovač

- 1x jamma hmatník

- 1x prototypová deska 5x7 cm, oboustranná

- 1x dioda 1N4148

- 7x 1Kohm odpory

- 1x odpor 820 ohmů

- 3x odpor 220 ohmů

- 1x pásová linka, rozteč 2,54 mm

- 1x VGA kabel

- 1x audio kabel

Krok 2: Schémata

Schémata
Schémata

Zde je barevné schéma celého projektu. V mých nadějích ne tak ortodoxní, ale snadněji sledovatelné.

Zapojení je tak snadné, jak vypadá:

- barevné linie pocházejí z konektoru PC VGA do zesilovače videa; 1K ohmový odpor k zemi snižuje proud na vstupu zesilovače videa. Na výstupní straně sériový odpor snižuje proud na arkádový CRT.

- synchronizační linka je jaksi „složitější“: oddělená synchronizace od VGA je nejprve složená, poté snížena děličem napětí, aby respektovala specifikace Arduino DUE (logika 3,3 V). Dělič napětí je vypočítán za předpokladu 5V synchronizačního signálu.

- video zesilovač (THS7374) mohl být napájen 3,3 V nebo 5 V; Vzhledem k tomu, že napájení na 5 V umožňuje širší rozsah vstupních napětí/signálů a že THS7374 lze ovládat 3,3 V, i když je napájen na 5 V, šel jsem cestou 5 V.

- zkratováno je zemnění videa, uzemnění arduino DUE, uzemnění THS7374 a jamma konektor.

- Řady Arduino DUE 5V a Jamma 5V NESMÍ BÝT KRÁTKÉ OKRUHY.

- NEODSTRAŇUJTE zvukový zesilovač z kabelu USB: k tomu potřebujete externí zdroj kvůli aktuálním omezením (tj. PC ATX PSU). V opačném případě poškodíte USB port nebo dokonce počítač.

Konektor VGA: upozornění

Nedávno jsem měl příležitost aktualizovat počítač používaný s mým jammarduino DUE. I když jsem to předtím testoval na dvou různých počítačích, oba používali karty ATI stejné rodiny (ATI 9250 a 9550). Nový počítač byl vybaven HD5750 s jediným analogovým výstupem DVI (bez VGA). To mě donutilo použít (pasivní) adaptér DVI na VGA. Po několika potížích jsem si všiml, že VGA kabel připojený k adaptéru MUSÍ mít pouze zem připojenou k pinu 5 konektoru VGA, aby fungoval, ne piny od 6 do 10, které jsou hlášeny ve většině schémat na webu. Mějte to na paměti pro případ, že z vaší grafické karty nevidíte žádný synchronizační signál.

Krok 3: Skica/kód

Skica/kód
Skica/kód

Nejprve musíte nainstalovat Arduino IDE; musíte nainstalovat také jádro SAM Cortex M3 (ve výchozím nastavení není k dispozici). V neposlední řadě nainstalujte ovladače Arduino DUE. Nejaktuálnější informace najdete v oficiálním tutoriálu „Začínáme s Arduino Due“.

Zde je přiložena skica, kterou potřebujete nahrát do svého Arduino DUE. Rozbalte a nahrajte „jammarduinoDUE.ino“do svého Arduino IDE, poté nahrajte na arduino DUE přes „programovací“port. Po úspěšném nahrání náčrtu odpojte USB kabel z „programovacího“portu a připojte Arduino DUE přes port „Nativní USB“, jinak vstupní část kódu nebude fungovat.

Arduino DUE v zásadě měří synchronizační frekvenci a deaktivuje video zesilovač, když je synchronizace příliš vysoká pro CRT s nízkým rozlišením. Arduino DUE zpracovává také vstupy přicházející z ovládacího panelu a odesílá výchozí klávesy MAME při konkrétním stisknutí tlačítka. Nechybí ani funkce řazení (aktivuje se podržením tlačítka P1 START), podobně jako komerční rozhraní.

V tabulce výchozí mapa kláves. Výchozí mapu klíčů nebo přidávání tlačítek můžete libovolně měnit přímo ve skice.

Pokud například chcete svému emulátoru přiřadit klávesy pro ovládání hlasitosti, měli byste tyto klávesy (řekněme klávesnice „+“pro zvýšení hlasitosti a klávesnice „-“pro snížení hlasitosti) nejprve definovat v nabídce kláves emu; poté přidejte posunutou klávesu k tlačítkům, ke kterým chcete přiřadit zvýšení nebo snížení hlasitosti. Řekněme, že chci zvýšit hlasitost stisknutím klávesy Shift a tlačítka Player 1. Upravím řádek

{26, HIGH, 0, 180, 180}, // mezera - P1 B3

na

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

Že „223“je znakový kód ASCII pro klávesnici „+“.

Nechám vás zjistit, jak přiřadit funkci „-“(nebo cokoli jiného chcete) funkci „snížení hlasitosti“jako cvičení (Tip: ASCII kód 222):)

Mějte na paměti, že v MAME můžete přiřadit pouze svazek režimu služby, nikoli svazek obecné emulace; to znamená, že pokud emulovaná deska neumožňuje softwarové ovládání hlasitosti, hlasitost nebude ovlivněna.

Krok 4: A co zpoždění vstupu?

Udělal jsem několik testů, abych zjistil, jak velké zpoždění může kód zavést; Pokud současně odešlete 3 tlačítka, úplná smyčka bude provedena přibližně 4 ms, takže méně než 33 ms trvá snímek při 30 FPS.

Krok 5: A co závodní skříně Jamma?

Co závodní skříně Jamma?
Co závodní skříně Jamma?

Kolečko potenciometru

Pokud je vaše skříňka závodní skříní, je velmi pravděpodobné, že kolečko je založeno na potenciometru (na zadní straně ovládacího panelu můžete vidět potenciometr 5Kohm).

Nejprve si stáhněte a nainstalujte knihovnu Joystick (k dnešnímu dni je prý s arduino DUE kompatibilní pouze verze 1 knihovny, ale stále je to velmi dobrá knihovna).

Poté přidejte do skici v kroku 4 několik následujících řádků, abyste mohli snadno manipulovat s kolečkem (kam umístit čáry necháte na cvičení …)

#zahrnout

int deadZone = 0;

neplatné nastavení () {

Joystick.begin ();}

prázdná smyčka () {

int readPot = analogRead (A3);

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

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

else {Joystick.setXAxis (0);}

}

Jak vidíte, můžete v případě potřeby nastavit mrtvou zónu (v dobře fungujícím arkádovém kole je nejlepší ji nastavit na nulu).

Zapojení potenciometru k Arduino DUE je jednoduché: boční piny potenciometru jdou na +3,3 V a GND, stírací kolík k analogovému portu arduino DUE (viz obrázek pro referenci). Zde jsem definoval analogový pin 3 (A3) jako vstup stěrače potenciometru kola, ale můžete nastavit analogový pin, který nejlépe vyhovuje vašim potřebám.

PS: víte, že pedály v závodních skříních jsou často ovládány potenciometrem, než technicky jsou kola a pedály stejné zařízení s jiným tvarem? To znamená, že zde uvedený kód lze použít také k ovládání originálních arkádových pedálů;)

Optické kolečko

Pokud je vaše kolo optické, lze s ním také snadno manipulovat, opět s drobnou úpravou počátečního náčrtu.

Velmi běžný pinout pro optické arkádové kodéry (Taito spinnery, kodéry Atari kol a tak dále) je:

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

Připojte 2. a 3. k Arduino DUE 5V a GND, a 1. a 4. k jakémukoli digitálnímu pinu, který chcete, přičemž věnujte pozornost tomu, že k snížení výstupu 5V z optického kodéru na 3.3V arduino DUE zvládne dělič napětí. Neposílejte výstupy OptoA a/nebo OptoB 5V přímo na vaše vstupní piny arduino DUE, jinak pravděpodobně tyto vstupy nebo dokonce celou desku usmažíte. Byl jsi varován.

V příkladu zde použiji digitální pin 2 a digitální pin 3 jako optický výstup A a optický výstup B.

#zahrnout

boolean optA_state = VYSOKÝ;

int xAxisMov = 2;

neplatné nastavení () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mouse.begin ();

}

prázdná smyčka () {

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);}}} // konec smyčky

Jedná se o optické kódování 1X Counting s nízkým rozlišením. Je to více než dostačující pro aplikace Arcade, ale rozlišení můžete snadno zvýšit přidáním nějakého řádku kódu.

PS: víte, že optická arkádová kola a arkádové rozmetače jsou technicky stejné zařízení s jiným tvarem? Víte, že trackballs jsou technicky dvouosý spinner? To znamená, že zde uvedený kód lze použít k ovládání skutečných arkádových rozmetadel a s několika snadnými úpravami také kuliček;)

Krok 6: Nějaký obrázek, nebo se to nestalo

Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!
Nějaký obrázek, nebo se to nestalo!

Zde je několik obrázků štítu, který jsem vytvořil. Není to práce na vysoké úrovni (vsaďte se, nejsem profík), ale je to 100% houpání v mém jamma Arcade Cabinetu!