Isi kandungan:
- Langkah 1: Perkakasan
- Langkah 2: Skematik
- Langkah 3: Lakaran / Kod
- Langkah 4: Bagaimana dengan Input Lag?
- Langkah 5: Bagaimana dengan Kabinet Racing Racing?
- Langkah 6: Beberapa Gambar, atau Tidak Terjadi
Video: Jammarduino DUE - PC DIY ke Antaramuka Jamma untuk Kabinet Arcade: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Instruksional ini akan menunjukkan kepada anda cara membuat perisai sederhana untuk Arduino DUE untuk menghubungkan mesin arcade asli dengan CRT resolusi rendah dan penyambung jamma ke PC anda.
Pancaran utama perisai adalah:
- untuk menguatkan isyarat video yang keluar dari kad video (voltan terlalu rendah untuk monitor Arcade CRT asli)
- untuk melindungi monitor CRT resolusi rendah anda daripada isyarat penyegerakan mendatar frekuensi terlalu tinggi
- untuk menekan butang "terjemahkan" pada panel kawalan arked ke sesuatu yang dapat dikendalikan oleh PC
Saya akan menunjukkan cara memperluaskan penggunaan antara muka untuk mengawal roda dan pemintal Arcade Racing.
Perhatikan: perisai TIDAK memaksa isyarat penyegerakan video ke frekuensi rendah: anda memerlukan beberapa perisian khusus untuk itu. Saya mencadangkan anda menggunakan CRT emudrivers atau Soft15KHz.
Langkah 1: Perkakasan
Saya akan menganggap anda mempunyai stesen solder dan timah dengan tangan dan anda tahu bagaimana menggunakannya. Oleh kerana penguat video adalah SMD dengan nada 0,65 mm, saya mencadangkan anda untuk membeli beberapa fluks pematerian untuk membantu pematerian mikroba itu. Saya menggunakan pen Roses Mildly Activated (RMA) "tidak bersih" yang murah dengan hasil yang sangat baik.
Antaramuka terdiri daripada:
- 1x papan mikrokontroler Arduino DUE
- 1x penguat video THS7374
- 1x penyesuai TSSOP14 hingga DIP14
- Penguat audio 1x
- 1x papan jari jamma
- Papan prototaip 1x 5x7 cm, sisi dua
- 1x 1N4148 diod
- Perintang 7x 1Kohm
- Perintang 1x 820 ohm
- Perintang 3x 220 ohm
- Garis jalur 1x, jarak 2.54 mm
- Kabel VGA 1x
- 1x kabel audio
Langkah 2: Skematik
Berikut adalah skema berwarna projek wholel. Tidak begitu ortodoks, tetapi lebih mudah diikuti, dengan harapan saya.
Pendawaian semudah kelihatan:
- garis warna berasal dari penyambung VGA PC ke penguat video; perintang 1Kohm ke tanah menurunkan arus ke input penguat video. Di sisi output, rintangan siri menurunkan arus ke arked CRT.
- talian penyegerakan entah bagaimana lebih "kompleks": penyegerakan yang terpisah dari VGA dibuat komposit, pertama, kemudian diturunkan oleh pembahagi voltan untuk menghormati spesifikasi Arduino DUE (logik 3.3V). Pembahagi voltan dikira dengan mengandaikan isyarat penyegerakan 5V.
- penguat video (THS7374) boleh dikuasakan pada 3.3V atau 5V; kerana kuasa pada 5V memungkinkan voltan / isyarat input yang lebih luas dan THS7374 dapat dikawal oleh 3.3V walaupun jus pada 5V, saya menggunakan cara 5V.
- tanah video, arduino DUE ground, tanah THS7374 dan ground penyambung jamma dilitar pintas.
- Garis Arduino DUE 5V dan Jamma 5V TIDAK BOLEH DITINGKATKAN PENDEK.
- JANGAN memasukkan amp audio dari kabel USB: anda memerlukan sumber luaran kerana had semasa (iaitu PC ATX PSU). Dengan berbuat demikian, anda akan merosakkan port USB atau PC anda.
Penyambung VGA: kata-kata berhati-hati
Baru-baru ini saya berpeluang untuk mengemas kini PC yang digunakan dengan jammarduino DUE saya. Walaupun saya pernah mengujinya dengan dua PC yang berbeza sebelumnya, mereka berdua menggunakan kad ATI dari keluarga yang sama (ATI 9250 dan 9550). PC baru dilengkapi dengan HD5750 dengan output analog DVI tunggal (tanpa VGA). Ini memaksa saya menggunakan penyesuai (pasif) DVI ke VGA. Nah, setelah beberapa masalah saya perhatikan bahawa kabel VGA yang disambungkan ke penyesuai HARUS hanya mempunyai tanah yang disambungkan ke pin 5 penyambung VGA untuk berfungsi, bukan pin dari 6 hingga 10 seperti yang dilaporkan dalam kebanyakan skema di web. Ingatlah perkara ini sekiranya anda tidak dapat melihat isyarat penyegerakan dari kad video anda.
Langkah 3: Lakaran / Kod
Anda mesti memasang Arduino IDE terlebih dahulu; anda mesti memasang SAM Cortex M3 Core juga (tidak hadir secara lalai). Akhir sekali, pasang pemacu Arduino DUE. Rujuk tutorial rasmi "Bermula dengan Arduino Due" untuk maklumat terkini.
Lakaran yang perlu anda muat naik ke Arduino DUE anda dilampirkan di sini. Unzip dan muatkan "jammarduinoDUE.ino" kepada anda Arduino IDE, kemudian muat naik ke arduino DUE melalui port "pengaturcaraan". Setelah lakaran berjaya dimuat, cabut kabel USB dari port "pengaturcaraan" dan sambungkan Arduino DUE melalui port "Native USB", atau bahagian input kod tidak akan berfungsi.
Pada dasarnya, Arduino DUE mengukur frekuensi penyegerakan dan mematikan penguat video apabila penyegerakan terlalu tinggi untuk CRT res rendah. Arduino DUE menangani input yang datang dari panel kawalan juga, menghantar kekunci MAME lalai dengan menekan butang tertentu. Fungsi shift (diaktifkan dengan menekan butang P1 START) juga disertakan, seperti antara muka komersial.
Dalam jadual peta utama lalai. Anda boleh menukar peta kunci lalai atau menambah butang mengikut kehendak anda secara langsung pada lakaran dengan mudah.
Sebagai contoh, jika anda ingin memberikan kekunci kawalan kelantangan untuk emulator anda, anda harus menentukan kekunci tersebut (katakanlah papan kekunci "+" untuk kelantangan dan papan kekunci "-" untuk kelantangan turun) di menu kekunci emu anda, pertama; kemudian tambahkan kekunci yang dialihkan ke butang yang anda mahukan kenaikan atau penurunan kelantangannya. Katakan saya mahu menambah kelantangan dengan menekan butang shift dan butang Pemain 1 3. Saya akan mengubah baris
{26, TINGGI, 0, 180, 180}, // ruang - P1 B3
ke
{26, TINGGI, 0, 180, 223}, // ruang - P1 B3 (+)
Itu "223" adalah kod aksara ASCII untuk papan kekunci "+".
Saya akan memberitahu anda bagaimana untuk menetapkan fungsi "-" (atau apa sahaja yang anda mahukan) kepada fungsi "turunkan volume" sebagai latihan (Petunjuk: kod ASCII 222):)
Perlu diingat bahawa di MAME anda hanya dapat menetapkan kelantangan mod perkhidmatan, bukan volume emulasi umum; ini bermaksud bahawa jika papan yang ditiru tidak membenarkan kawalan kelantangan perisian, kelantangan tidak akan terpengaruh.
Langkah 4: Bagaimana dengan Input Lag?
Saya membuat beberapa ujian untuk melihat berapa banyak kelewatan yang dapat diperkenalkan oleh kod; baik, dengan menghantar 3 butang tekan pada masa yang sama satu gelung lengkap memerlukan masa sekitar 4 ms untuk dilaksanakan, jauh lebih rendah daripada 33 ms bingkai yang bertahan pada 30 FPS.
Langkah 5: Bagaimana dengan Kabinet Racing Racing?
Roda Potensiometer
Sekiranya kabinet anda adalah kabinet lumba, kemungkinan roda berpusat pada potensiometer (anda dapat melihat potensiometer 5Kohm di bahagian belakang panel kawalan).
Perkara pertama, muat turun dan pasang perpustakaan Joystick (pada tarikh hari ini hanya versi 1 perpustakaan yang dikatakan serasi dengan arduino DUE, tetapi ia masih merupakan perpustakaan yang sangat baik).
Kemudian, tambahkan beberapa baris yang mengikuti lakaran pada Langkah 4 untuk mengendalikan roda dengan mudah (di mana meletakkan garisan yang diserahkan kepada anda sebagai latihan…)
#sertakan
int deadZone = 0;
batal persediaan () {
Joystick.begin ();}
gelung kosong () {
int readPot = analogRead (A3);
int wheelPos = peta (readPot, 0, 1023, -127, 127);
jika (wheelPos> deadZone || wheelPos <-deadZone) {Joystick.setXAxis (wheelPos);}
yang lain {Joystick.setXAxis (0);}
}
Seperti yang anda lihat, anda boleh menetapkan zon mati jika perlu (di roda arked berfungsi dengan baik, sebaiknya tetapkan ke sifar).
Pendawaian potensiometer ke Arduino DUE mudah: pin sisi potensiometer pergi ke + 3.3V dan GND, pin pengelap ke port analog arduino DUE (lihat gambar untuk rujukan). Saya nyatakan di sini pin analog 3 (A3) sebagai input untuk pengelap potensiometer roda, tetapi anda boleh menetapkan pin analog yang paling sesuai dengan keperluan anda.
PS: tahukah anda bahawa pedal di kabinet lumba sering dikendalikan oleh potensiometer, berbanding secara teknikal roda dan pedal adalah alat yang sama dengan bentuk yang berbeza? Ini bermaksud bahawa kod di sini dapat digunakan untuk mengendalikan pedal arked asli juga;)
Roda Optik
Sekiranya roda anda optik, ia juga dapat dikendalikan dengan mudah, sekali lagi, dengan pengubahsuaian kecil pada lakaran permulaan.
Pinout yang sangat biasa untuk pengekod Arcade optik (pemintal Taito, pengekod roda Atari dan sebagainya) adalah:
1. OptoA KELUAR
2. + 5V
3. GND
4. OptoB KELUAR
Sambungkan 2. dan 3. ke Arduino DUE 5V dan GND, dan 1. dan 4. ke mana-mana pin digital yang anda suka perhatikan bahawa pembahagi voltan diperlukan untuk menurunkan output 5V dari pengekod optik ke 3.3V arduino DUE yang dapat dikendalikan. Jangan hantar output OptoA dan / atau OptoB 5V terus ke pin input arduino DUE anda atau anda mungkin akan menggoreng input tersebut atau bahkan keseluruhan papan. Anda telah diberi amaran.
Dalam lakaran contoh di sini saya akan menggunakan pin digital 2 dan pin digital 3 sebagai optik keluar A dan optik keluar B.
#sertakan
boolean optA_state = TINGGI;
int xAxisMov = 2;
batal persediaan () {
pinMode (2, INPUT_PULLUP); // OptA
pinMode (3, INPUT_PULLUP); // OptB
Tetikus.begin ();
}
gelung kosong () {
jika (optA_state == TINGGI && digitalRead (2) == RENDAH) {
optA_state =! optA_state;
if (digitalRead (3) == TINGGI) {Mouse.move (xAxisMov, 0, 0);} lain {Mouse.move (-xAxisMov, 0, 0);}}} // gelung hujung
Ini adalah pengekodan optik Pengiraan 1X resolusi rendah. Ini lebih dari cukup untuk aplikasi Arcade, tetapi anda dapat meningkatkan resolusi dengan mudah dengan menambahkan beberapa baris kod.
PS: adakah anda tahu bahawa roda arked optik dan pemutar arked secara teknikalnya merupakan alat yang sama dengan bentuk yang berbeza? Adakah anda tahu bahawa bola trek secara teknikal adalah pemintal 2 paksi? Ini bermaksud bahawa kod di sini dapat digunakan untuk mengawal pemintal arked asli dan, dengan sedikit, trackball modifikasi yang mudah juga;)
Langkah 6: Beberapa Gambar, atau Tidak Terjadi
Berikut adalah beberapa gambar perisai yang saya buat. Ia bukan karya peringkat tinggi (bertaruh, saya bukan pro), tetapi 100% bergoyang di jamma Arcade Cabinet saya!
Disyorkan:
Bermula dengan Antaramuka Sensor I2C ?? - Antaramuka MMA8451 Anda Menggunakan ESP32s: 8 Langkah
Bermula dengan Antaramuka Sensor I2C ?? - Antaramuka MMA8451 Anda Dengan Menggunakan ESP32: Dalam tutorial ini, anda akan mempelajari semua tentang Cara memulakan, menyambung dan mendapatkan peranti I2C (Accelerometer) yang berfungsi dengan pengawal (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Pilih Antaramuka SD untuk ESP32: 12 Langkah (dengan Gambar)
Pilih Antaramuka SD untuk ESP32: Arahan ini menunjukkan sesuatu tentang memilih antara muka SD untuk projek ESP32 anda
Antaramuka Pautan PC Yaesu FT-100 untuk Mod Digital: 3 Langkah
Antaramuka Pautan PC Yaesu FT-100 untuk Mod Digital: Di sini saya tunjukkan garis panduan untuk membina antara muka pautan PC untuk Yaesu FT-100. Antara muka ini membolehkan anda menghantar dan menerima isyarat audio dari kad suara untuk mengendalikan mod digital HAM (FT8, PSK31 dll.) Maklumat tambahan tersedia
Antaramuka Tanpa Wayar Bluetooth untuk Kaliper dan Petunjuk Mitutoyo: 8 Langkah (dengan Gambar)
Antaramuka Tanpa Wayar Bluetooth untuk Kaliper dan Indikator Mitutoyo: Terdapat berjuta-juta kaliper, mikrometer, penunjuk dan peranti lain Mitutoyo Digimatic di dunia sekarang. Ramai orang seperti saya menggunakan peranti tersebut untuk mengumpulkan data secara langsung ke dalam PC. Ini menghilangkan perlu masuk dan taip kadang-kadang beratus-ratus
Sensor Titik Hujan Antaramuka ke NodeMcu - untuk Pemula: 5 Langkah
Sensor Titik Hujan Antaramuka ke NodeMcu | untuk Pemula: dalam tutorial ini anda mengetahui tentang cara Memasang sensor titisan hujan ke NodeMcu