Daftar Isi:

Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade: 6 Langkah
Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade: 6 Langkah

Video: Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade: 6 Langkah

Video: Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade: 6 Langkah
Video: Настройка и игра на печатных платах классических аркадных игр 2024, November
Anonim
Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade
Jammarduino DUE - Antarmuka PC ke Jamma DIY untuk Kabinet Arkade

Instruksi ini akan menunjukkan kepada Anda cara membuat perisai sederhana untuk Arduino DUE untuk menghubungkan mesin arcade asli dengan CRT resolusi rendah dan konektor jamma ke PC Anda.

Tuang utama perisai adalah:

- untuk memperkuat sinyal video yang keluar dari kartu video (tegangan terlalu rendah untuk monitor Arcade CRT asli)

- untuk melindungi monitor CRT resolusi rendah Anda dari sinyal sinkronisasi horizontal frekuensi terlalu tinggi

- untuk "menerjemahkan" tombol yang ditekan pada panel kontrol arcade ke sesuatu yang dapat ditangani oleh PC

Saya akan menunjukkan cara memperluas penggunaan antarmuka untuk mengontrol roda dan pemintal Arcade Racing.

Perhatikan: perisai TIDAK memaksa sinyal sinkronisasi video ke frekuensi rendah: Anda memerlukan beberapa perangkat lunak khusus untuk itu. Saya sarankan Anda menggunakan emudriver CRT atau Soft15KHz.

Langkah 1: Perangkat Keras

Saya akan menganggap Anda memiliki stasiun solder dan beberapa kaleng dengan tangan dan Anda tahu cara menggunakannya. Karena penguat video adalah SMD dengan pitch 0,65 mm, saya sarankan Anda untuk membeli beberapa fluks solder untuk membantu menyolder mikroba itu. Saya menggunakan pena Rosing Mildly Activated (RMA) murah "tanpa pembersihan" dengan hasil yang luar biasa.

Antarmuka terdiri dari:

- 1x papan mikrokontroler Arduino DUE

- 1x penguat video THS7374

- 1x TSSOP14 ke adaptor DIP14

- 1x penguat audio

- 1x jamma fingerboard

- Papan prototipe 1x 5x7 cm, sisi ganda

- 1x 1N4148 dioda

- Resistor 7x 1Kohm

- Resistor 1x820 ohm

- Resistor 3x220 ohm

- 1x garis strip, jarak 2,54 mm

- 1x kabel VGA

- 1x kabel audio

Langkah 2: Skema

skema
skema

Berikut adalah skema berwarna dari keseluruhan proyek. Tidak terlalu ortodoks, tetapi lebih mudah diikuti, dalam harapan saya.

Pengkabelan semudah kelihatannya:

- garis warna berasal dari konektor VGA PC ke amplifier video; resistor 1Kohm ke ground menurunkan arus ke input penguat video. Di sisi keluaran resistansi seri menurunkan arus ke CRT arcade.

- garis sinkronisasi entah bagaimana lebih "kompleks": sinkronisasi terpisah dari VGA dibuat komposit, pertama, kemudian diturunkan oleh pembagi tegangan untuk menghormati spesifikasi Arduino DUE (logika 3.3V). Pembagi tegangan dihitung dengan asumsi sinyal sinkronisasi 5V.

- penguat video (THS7374) dapat diberi daya pada 3.3V atau 5V; karena memberi daya pada 5V memungkinkan rentang tegangan/sinyal input yang lebih luas dan karena THS7374 dapat dikontrol oleh 3.3V bahkan jika dijus pada 5V, saya menggunakan cara 5V.

- ground video, ground arduino DUE, ground THS7374 dan ground konektor jamma dihubung singkat.

- Jalur Arduino DUE 5V dan Jamma 5V TIDAK HARUS DIHUBUNGKAN SINGKAT.

- JANGAN jus ampli audio dari kabel USB: Anda memerlukan sumber eksternal untuk itu karena batasan arus (yaitu PC ATX PSU). Melakukan itu Anda akan merusak port USB Anda atau bahkan PC Anda.

Konektor VGA: kata peringatan

Saya baru-baru ini memiliki kesempatan untuk memperbarui PC yang digunakan dengan jammarduino DUE saya. Bahkan jika saya telah mengujinya dengan dua PC yang berbeda sebelumnya, keduanya menggunakan kartu ATI dari keluarga yang sama (ATI 9250 dan 9550). PC baru dilengkapi dengan HD5750 dengan output analog DVI tunggal (tanpa VGA). Ini memaksa saya untuk menggunakan adaptor DVI ke VGA (pasif). Nah, setelah beberapa perjuangan saya perhatikan bahwa kabel VGA yang terhubung ke adaptor HARUS hanya terhubung ke ground ke pin 5 dari konektor VGA agar berfungsi, bukan pin dari 6 hingga 10 seperti yang dilaporkan di sebagian besar skema di web. Ingatlah hal ini jika Anda tidak dapat melihat sinyal sinkronisasi apa pun dari kartu video Anda.

Langkah 3: Sketsa/Kode

Sketsa/Kode
Sketsa/Kode

Anda harus menginstal Arduino IDE terlebih dahulu; Anda harus menginstal SAM Cortex M3 Core juga (tidak ada secara default). Terakhir, instal driver Arduino DUE. Lihat tutorial resmi "Memulai Arduino Due" untuk informasi terbaru.

Sketsa yang perlu Anda unggah ke Arduino DUE Anda di sini terlampir. Buka zip dan muat "jammarduinoDUE.ino" ke Arduino IDE Anda, lalu unggah ke arduino DUE melalui port "pemrograman". Setelah sketsa berhasil diunggah, lepaskan kabel USB dari port "pemrograman" dan sambungkan Arduino DUE melalui port "Native USB", atau bagian input kode tidak akan berfungsi.

Pada dasarnya, Arduino DUE mengukur frekuensi sinkronisasi dan menonaktifkan penguat video saat sinkronisasi terlalu tinggi untuk CRT beresolusi rendah. Arduino DUE menangani input yang datang dari panel kontrol juga, mengirimkan kunci MAME default pada penekanan tombol tertentu. Fungsi shift (diaktifkan dengan terus menekan tombol P1 START) juga disertakan, seperti antarmuka komersial.

Dalam tabel keymap default. Anda dapat mengubah peta kunci default atau menambahkan tombol sesuka Anda langsung pada sketsa dengan mudah.

Misalnya, jika Anda ingin menetapkan tombol kontrol volume untuk emulator Anda, Anda harus menentukan tombol tersebut (misalkan tombol "+" untuk volume naik dan tombol "-" untuk volume turun) di menu tombol emu Anda, pertama; lalu tambahkan tombol yang digeser ke tombol yang Anda inginkan untuk ditetapkan volumenya. Katakanlah saya ingin meningkatkan volume dengan menekan tombol shift dan tombol Player 1 3. Saya akan memodifikasi garis

{26, TINGGI, 0, 180, 180}, //spasi - P1 B3

ke

{26, TINGGI, 0, 180, 223}, //spasi - P1 B3 (+)

Bahwa "223" adalah kode karakter ASCII untuk keypad "+".

Saya akan memberi tahu Anda cara menetapkan "-" (atau apa pun yang Anda suka) ke fungsi "volume turun" sebagai latihan (Petunjuk: kode ASCII 222):)

Harap diingat bahwa di MAME Anda hanya dapat menetapkan volume mode layanan, bukan volume emulasi umum; ini berarti bahwa jika papan yang diemulasi tidak memungkinkan kontrol volume perangkat lunak, volume tidak akan terpengaruh.

Langkah 4: Bagaimana dengan Input Lag?

Saya melakukan beberapa tes untuk melihat seberapa banyak jeda yang bisa ditimbulkan oleh kode; baik, dengan mengirimkan 3 tombol tekan pada saat yang sama loop lengkap membutuhkan waktu sekitar 4 ms untuk dieksekusi, sejauh ini kurang dari 33 ms frame berlangsung pada 30 FPS.

Langkah 5: Bagaimana dengan Jamma Racing Cabinets?

Bagaimana dengan Kabinet Balap Jamma?
Bagaimana dengan Kabinet Balap Jamma?

Roda Potensiometer

Jika kabinet Anda adalah kabinet balap, kemungkinan besar rodanya berbasis potensiometer (Anda dapat melihat potensiometer 5Kohm di sisi belakang panel kontrol).

Hal pertama yang pertama, unduh dan instal perpustakaan Joystick (pada tanggal hari ini hanya perpustakaan versi 1 yang dikatakan kompatibel dengan arduino DUE, tetapi itu masih perpustakaan yang sangat bagus).

Kemudian, tambahkan beberapa garis yang mengikuti sketsa pada Langkah 4 untuk menangani roda dengan mudah (di mana menempatkan garis diserahkan kepada Anda sebagai latihan…)

#termasuk

int zona mati = 0;

batalkan pengaturan() {

Joystick.mulai();}

lingkaran kosong() {

int readPot = analogRead(A3);

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

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

else {Joystick.setXAxis(0);}

}

Seperti yang Anda lihat, Anda dapat mengatur zona mati jika perlu (dalam roda arcade yang berfungsi baik, yang terbaik adalah mengaturnya ke nol).

Menghubungkan potensiometer ke Arduino DUE sangat mudah: pin samping potensiometer menuju +3,3V dan GND, pin penghapus ke port analog arduino DUE (lihat gambar untuk referensi). Saya mendefinisikan di sini pin analog 3 (A3) sebagai input untuk penghapus potensiometer roda, tetapi Anda dapat mengatur pin analog yang paling sesuai dengan kebutuhan Anda.

PS: Tahukah Anda bahwa pedal di lemari balap sering dikendalikan oleh potensiometer, padahal secara teknis roda dan pedal adalah perangkat yang sama dengan bentuk yang berbeda? Ini berarti bahwa kode di sini dapat digunakan untuk mengontrol pedal arcade asli juga;)

Roda Optik

Jika roda Anda bersifat optik, itu juga dapat dengan mudah ditangani, sekali lagi, dengan sedikit modifikasi pada sketsa awal.

Pinout yang sangat umum untuk encoder Arcade optik (pemintal Taito, encoder roda Atari, dan sebagainya) adalah:

1. OptoA KELUAR

2. +5V

3. GND

4. OptoB KELUAR

Hubungkan 2. dan 3. ke Arduino DUE 5V dan GND, dan 1. dan 4. ke pin digital apa pun yang Anda suka, perhatikan bahwa pembagi tegangan diperlukan untuk menurunkan output 5V dari encoder optik ke 3.3V arduino DUE yang dapat menangani. Jangan mengirim output OptoA dan/atau OptoB 5V langsung ke pin input arduino DUE Anda atau Anda mungkin akan menggoreng input tersebut atau bahkan seluruh board. Anda telah diperingatkan.

Pada contoh sketsa disini saya akan menggunakan digital pin 2 dan digital pin 3 sebagai optical out A dan optical out B.

#termasuk

boolean optA_state = TINGGI;

int xAxisMov = 2;

batalkan pengaturan() {

pinMode (2, INPUT_PULLUP); //optA

pinMode (3, INPUT_PULLUP); //optB

Mouse.mulai();

}

lingkaran kosong() {

if (optA_state == TINGGI && digitalBaca(2) == RENDAH){

optA_state=!optA_state;

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

Ini adalah resolusi rendah 1X Menghitung pengkodean optik. Ini lebih dari cukup untuk aplikasi Arcade, tetapi Anda dapat meningkatkan resolusi dengan mudah dengan menambahkan beberapa baris kode.

PS: Tahukah Anda bahwa optical arcade wheel dan arcade spinner secara teknis adalah perangkat yang sama dengan bentuk yang berbeda? Tahukah Anda bahwa trackball secara teknis adalah pemintal 2 sumbu? Ini berarti bahwa kode di sini dapat digunakan untuk mengontrol pemintal arcade asli dan, dengan sedikit, trackball modifikasi yang mudah juga;)

Langkah 6: Beberapa Foto, atau Tidak Terjadi

Beberapa Pic, atau Tidak Terjadi!
Beberapa Pic, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!
Beberapa Foto, atau Tidak Terjadi!

Berikut adalah beberapa gambar dari perisai yang saya buat. Ini bukan pekerjaan tingkat tinggi (pasti, saya bukan pro), tapi 100% goyang di Kabinet Arcade jamma saya!

Direkomendasikan: