Mündəricat:

Jammarduino DUE - Arcade Şkaflar üçün Jamma Arayüzünə DIY PC: 6 Addım
Jammarduino DUE - Arcade Şkaflar üçün Jamma Arayüzünə DIY PC: 6 Addım

Video: Jammarduino DUE - Arcade Şkaflar üçün Jamma Arayüzünə DIY PC: 6 Addım

Video: Jammarduino DUE - Arcade Şkaflar üçün Jamma Arayüzünə DIY PC: 6 Addım
Video: Amazing arduino project 2024, Dekabr
Anonim
Jammarduino DUE - Arcade Şkaflar üçün Jamma İnterfeysi üçün DIY PC
Jammarduino DUE - Arcade Şkaflar üçün Jamma İnterfeysi üçün DIY PC

Bu təlimat, Arduino DUE üçün aşağı qətnamə CRT və cəmma bağlayıcısı olan orijinal bir arcade maşınını kompüterinizə bağlamaq üçün sadə bir qalxanın necə yaradılacağını sizə göstərəcək.

Qalxanın əsas tökmə yerləri bunlardır:

- video kartdan gələn video siqnalını gücləndirmək üçün (orijinal Arcade CRT monitoru üçün çox aşağı gərginlikdə)

- aşağı qətnaməli CRT monitorunuzu çox yüksək tezlikli üfüqi sinxronizasiya siqnallarından qorumaq üçün

- Arcade idarəetmə panelindəki düymələri kompüterin idarə edə biləcəyi bir şeyə "tərcümə etmək"

Arcade Racing təkərlərini və fırlananları idarə etmək üçün interfeys istifadəsini necə genişləndirəcəyinizi sizə göstərəcəyəm.

Diqqət: qalxan video sinxronizasiya siqnalını aşağı tezliklərə məcbur etmir: bunun üçün xüsusi bir proqrama ehtiyacınız var. CRT emudrivers və ya Soft15KHz istifadə etməyi təklif edirəm.

Addım 1: Avadanlıq

Əlinizdə bir lehimləmə stansiyası və bir az qalay olduğunu və onlardan necə istifadə edəcəyinizi biləcəyinizi güman edəcəyəm. Video gücləndiricinin 0,65 mm aralığa malik bir SMD olduğuna görə, bu mikrobun lehimlənməsi üçün bir az lehim axını almağı təklif edirəm. Ucuz "təmizlənməyən" Rosing Mildly Activated (RMA) əla qələm istifadə etdim.

İnterfeys aşağıdakılardan ibarətdir:

- 1x Arduino DUE mikrokontroller lövhəsi

- 1x THS7374 video gücləndirici

- 1x TSSOP14 - DIP14 adapteri

- 1x audio gücləndirici

- 1x jamma barmaq lövhəsi

- 1x 5x7 sm ölçülü prototip lövhəsi, iki tərəfli

- 1x 1N4148 diod

- 7x 1Kohm rezistorlar

- 1x820 ohm müqavimət

- 3x 220 ohm müqavimət

- 1x zolaq xətti, 2,54 mm aralıq

- 1 x VGA kabeli

- 1x audio kabel

Addım 2: sxemlər

Sxemalar
Sxemalar

Bütün layihənin rəngli bir sxemidir. Ortodoks deyil, amma izləmək daha asandır.

Bağlantılar göründüyü qədər asandır:

- rəng xətləri PC VGA bağlayıcısından video gücləndiriciyə gəlir; yerə 1Kohm rezistor, video gücləndirici girişinə olan cərəyanı azaldır. Çıxış tərəfində bir sıra müqavimət, CRT arcade cərəyanını azaldır.

- sinxronizasiya xətti birtəhər daha "mürəkkəbdir": VGA -dan ayrı sinxronizasiya əvvəlcə kompozit şəkildə aparılır, sonra Arduino DUE xüsusiyyətlərinə (3.3V məntiqi) hörmət etmək üçün gərginlik bölücü tərəfindən endirilir. Gərginlik bölücü 5V sinxronizasiya siqnalı ilə hesablanır.

- video gücləndirici (THS7374) 3.3V və ya 5V gücündə ola bilər; 5V gücündə olmaq daha geniş bir giriş gərginliyi/siqnalına imkan verir və THS7374 -ün 5V -də şirəsi olsa belə 3.3V ilə idarə oluna biləcəyini nəzərə alaraq 5V yolu ilə getdim.

- video torpaq, arduino DUE torpaq, THS7374 topraklama və jamma bağlayıcı şasisi qısa dövrəyə girir.

- Arduino DUE 5V və Jamma 5V xətləri QISA DEVRE OLMAMALIDIR.

- USB kabelindən səs gücləndiricisini SÜRMƏYİN: cari məhdudiyyətlərə görə xarici mənbəyə ehtiyacınız var (yəni PC ATX PSU). Bunu etməklə USB portunuza və ya hətta kompüterinizə zərər verəcəksiniz.

VGA bağlayıcısı: xəbərdarlıq sözü

Bu yaxınlarda jammarduino DUE ilə birlikdə istifadə etdiyim PC -ni yeniləmək imkanım oldu. Daha əvvəl iki fərqli PC ilə sınamış olsam belə, hər ikisi eyni ailənin ATI kartlarından istifadə edirdi (ATI 9250 və 9550). Yeni kompüter, tək DVI analoq çıxışı olan HD5750 ilə təchiz olunmuşdu (VGA yoxdur). Bu, məni (passiv) DVI -dən VGA adapterinə istifadə etməyə məcbur etdi. Yaxşı, bir az əziyyət çəkdikdən sonra, adapterə qoşulan VGA kabelinin işləməsi üçün VGA konnektorunun 5 -ci pininə bağlı olması lazım olduğunu, İnternetdəki əksər sxemlərdə bildirildiyi kimi 6 -dan 10 -a qədər sancaqlar olmamalıdır. Video kartınızdan heç bir sinxronizasiya siqnalı görmədiyiniz halda bunu unutmayın.

Addım 3: Eskiz/Kod

Eskiz/Kod
Eskiz/Kod

Əvvəlcə Arduino IDE qurmalısınız; SAM Cortex M3 Core qurmalısınız (standart olaraq mövcud deyil). Son olaraq Arduino DUE sürücülərini quraşdırın. Ən müasir məlumatlar üçün rəsmi "Arduino Due ilə işə başlama" dərsliyinə baxın.

Arduino DUE -a yükləməli olduğunuz eskiz burada əlavə olunur. "JammarduinoDUE.ino" nu Arduino IDE -dən açın və yükləyin, sonra "proqramlaşdırma" portu vasitəsilə arduino DUE -a yükləyin. Eskiz uğurla yükləndikdən sonra, USB kabelini "proqramlaşdırma" portundan ayırın və Arduino DUE -ni "Yerli USB" portu ilə bağlayın, əks halda kodun giriş hissəsi işləməyəcək.

Əsasən, Arduino DUE, sinxronizasiya tezliyini ölçür və sinxronizasiya aşağı CRT üçün çox yüksək olduqda video gücləndiricini deaktiv edir. Arduino DUE, idarəetmə panelindən gələn girişləri də idarə edir, xüsusi düymələrə basaraq standart MAME düymələrini göndərir. Ticarət interfeysləri kimi bir sürüşmə funksiyası (P1 START düyməsini basılı tutaraq aktivləşdirilir) də daxildir.

Cədvəldə standart düymələr xəritəsi var. Varsayılan açar xəritəni dəyişdirə və ya birbaşa eskizdə istəyinizə görə düymələr əlavə edə bilərsiniz.

Məsələn, emulyatorunuz üçün səs idarəetmə düymələrini təyin etmək istəyirsinizsə, əvvəlcə emu düymələri menyunuzda bu düymələri təyin etməlisiniz (səs səviyyəsini artırmaq üçün "+" və klaviatura düyməsini "-" deyək); sonra səsin artırılmasını və ya azalmasını təyin etmək istədiyiniz düymələrə sürüşdürülmüş düyməni əlavə edin. Tutaq ki, shift düyməsini və Oyunçu 1 düyməsini 3 basaraq səsi artırmaq istəyirəm. Mən xətti dəyişdirəcəyəm

{26, YÜKSEK, 0, 180, 180}, // boşluq - P1 B3

{26, YÜKSEK, 0, 180, 223}, // boşluq - P1 B3 (+)

Bu "223", klaviatura "+" üçün ASCII simvol kodudur.

Bir məşq olaraq "həcmi azalt" funksiyasına "-" (və ya istədiyiniz hər şeyi) necə təyin edəcəyinizi anlamağa icazə verəcəyəm (İpucu: ASCII kodu 222):)

Unutmayın ki, MAME -də ümumi emulyasiya həcmini deyil, yalnız xidmət rejimi həcmini təyin edə bilərsiniz; bu, emulyasiya edilmiş lövhənin proqramın səs səviyyəsinə nəzarət etməsinə icazə vermədiyi təqdirdə səsin təsirsiz qalacağı deməkdir.

Addım 4: Giriş Gecikməsi haqqında nə demək olar?

Kodun nə qədər gecikdirə biləcəyini görmək üçün bəzi testlər etdim; Yaxşı, eyni anda 3 düyməyə basaraq tam bir döngənin yerinə yetirilməsi təxminən 4 ms çəkir, indiyə qədər 33 ms -dən az bir çərçivə 30 FPS -də davam edir.

Addım 5: Jamma Yarış Şkafları haqqında nə demək olar?

Jamma yarış kabinetləri haqqında nə demək olar?
Jamma yarış kabinetləri haqqında nə demək olar?

Potansiyometr təkəri

Kabinetiniz yarış kabinetidirsə, çox güman ki, təkər potansiyometr əsaslıdır (idarəetmə panelinin arxa tərəfində 5Kohm potansiyometrini görə bilərsiniz).

Birincisi, Joystick kitabxanasını yükləyin və quraşdırın (bu gün kitabxananın yalnız 1 -ci versiyasının arduino DUE ilə uyğun olduğu söylənir, amma yenə də çox yaxşı bir kitabxanadır).

Sonra, çarxı asanlıqla idarə etmək üçün 4 -cü addımdakı eskizə aşağıdakı bir neçə sətir əlavə edin (xətlərin harada yerləşdiriləcəyi sizə məşq olaraq qalır …)

#daxil edin

int deadZone = 0;

boş quraşdırma () {

Joystick.begin ();}

boşluq döngəsi () {

int readPot = analogRead (A3);

int wheelPos = xəritə (readPot, 0, 1023, -127, 127);

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

başqa {Joystick.setXAxis (0);}

}

Gördüyünüz kimi, zəruri hallarda bir ölü zonası qura bilərsiniz (yaxşı işləyən bir arcade təkərində sıfıra qoymaq ən yaxşısıdır).

Arduino DUE -a potansiyometr bağlamaq çox sadədir: potansiyometrin yan sancaqları +3.3V və GND -yə, silecek pimi arduino DUE analog portuna gedir (istinad üçün şəkilə baxın). Burada 3 -cü analog pinini (A3) təkər potensiometrini silmək üçün giriş olaraq təyin etdim, ancaq ehtiyaclarınıza ən uyğun olan analog pin təyin edə bilərsiniz.

PS: yarış kabinetlərindəki pedalların tez -tez potensiometr tərəfindən idarə olunduğunu bilirsiniz, texniki cəhətdən təkərlər və pedallar fərqli bir forma ilə eyni cihazdır? Bu o deməkdir ki, buradakı kod orijinal arcade pedallarını idarə etmək üçün də istifadə edilə bilər;)

Optik Təkər

Təkəriniz optikdirsə, başlanğıc eskizində sadə bir dəyişikliklə də asanlıqla idarə oluna bilər.

Optik Arcade kodlayıcıları üçün çox yaygın bir pinout (Taito əyiriciləri, Atari təkərləri kodlayıcıları və s.):

1. OptoA OUT

2. +5V

3. GND

4. OptoB OUT

2. və 3. Arduino DUE 5V və GND və 1. və 4. hər hansı bir rəqəmsal pinə qoşun, 5V çıxışını optik kodlayıcıdan 3.3V arduino DUE -nin idarə edə biləcəyi bir gərginlik bölücüsünə ehtiyac olduğunu unutmayın.. OptoA və/və ya OptoB 5V çıxışlarını birbaşa arduino DUE giriş pinlərinizə göndərməyin, əks halda bu girişləri və ya hətta bütün lövhəni qızardacaqsınız. Sənə xəbərdarlıq edildi.

Buradakı nümunə eskizində rəqəmsal pin 2 və rəqəmsal pin 3 -dən optik A və optik B kimi istifadə edəcəyəm.

#daxil edin

boolean optA_state = HIGH;

int xAxisMov = 2;

boş quraşdırma () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mouse.begin ();

}

boşluq döngəsi () {

əgər (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);}}} // loop sonu

Bu aşağı qətnaməli 1X Sayma optik kodlaşdırmasıdır. Arcade tətbiqləri üçün kifayət qədər çoxdur, ancaq bir kod xətti əlavə edərək qətnaməni asanlıqla artıra bilərsiniz.

PS: optik arcade təkərlər və arcade əyiricilərin texniki olaraq fərqli bir forma ilə eyni cihaz olduğunu bilirsinizmi? Trackballların texniki olaraq 2 oxlu bir fırlanan olduğunu bilirsinizmi? Bu o deməkdir ki, buradakı kod orijinal arcade əyiricilərini idarə etmək üçün istifadə edilə bilər və çox az sayda asan top dəyişikliyi ilə;)

Addım 6: Bəzi Şəkillər, yoxsa Olmadı

Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!
Bəzi Şəkillər, yoxsa Olmadı!

İşdə hazırladığım qalxanın bəzi şəkilləri. Bu yüksək səviyyəli bir iş deyil (bahis et, mən peşəkar deyiləm), amma mənim Jamma Arcade Kabinetində 100% sallanır!

Tövsiyə: