İçindekiler:

Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne: 6 Adım
Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne: 6 Adım

Video: Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne: 6 Adım

Video: Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne: 6 Adım
Video: 35 Korkunç Hayalet Videosu: 2023'ün Mega Derlemesi [V1] 2024, Kasım
Anonim
Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne
Jammarduino DUE - Oyun Salonu Dolapları için DIY PC'den Jamma Arayüzüne

Bu talimat, Arduino DUE için düşük çözünürlüklü CRT ve jamma konektörü ile PC'nize gerçek bir arcade makinesini arayüzlemek için basit bir kalkanın nasıl oluşturulacağını gösterecektir.

Kalkan ana dökümleri şunlardır:

- video kartından gelen video sinyalini yükseltmek için (gerçek bir Arcade CRT monitör için çok düşük voltaj)

- düşük çözünürlüklü CRT monitörünüzü çok yüksek frekanslı yatay senkronizasyon sinyallerinden korumak için

- arcade kontrol panelindeki düğmeye basıldığında PC'nin kaldırabileceği bir şeye "çevirmek" için

Arcade Racing tekerleklerini ve spinnerleri kontrol etmek için arayüz kullanımını nasıl genişleteceğinizi göstereceğim.

Dikkat: kalkan, video senkronizasyon sinyalini düşük frekanslara ZORLAMAZ: bunun için bazı özel yazılımlara ihtiyacınız var. CRT emudrivers veya Soft15KHz kullanmanızı öneririm.

Adım 1: Donanım

Elinizde bir lehimleme istasyonu ve biraz kalay olduğunu ve bunları nasıl kullanacağınızı bildiğinizi varsayacağım. Video yükseltici 0,65 mm aralıklı bir SMD olduğundan, bu mikrobun lehimlenmesine yardımcı olmak için biraz lehim fluksu satın almanızı öneririm. Mükemmel sonuçlar veren ucuz bir "temizlemeyen" Rosing Hafif Aktivasyonlu (RMA) kalem kullandım.

Arayüz şunlardan oluşur:

- 1x Arduino DUE mikrodenetleyici kartı

- 1x THS7374 video amplifikatörü

- 1x TSSOP14 - DIP14 adaptörü

- 1x ses yükseltici

- 1x jamma klavyesi

- 1x 5x7 cm prototip tahtası, çift taraflı

- 1x 1N4148 diyot

- 7x 1Kohm dirençler

- 1x 820 ohm direnç

- 3x 220 ohm direnç

- 1x şerit hattı, 2,54 mm aralık

- 1x VGA kablosu

- 1x ses kablosu

2. Adım: Şemalar

şemalar
şemalar

İşte bütün projenin renkli bir şeması. O kadar ortodoks değil, ama umarım daha kolay takip edilir.

Kablolama göründükleri kadar kolaydır:

- PC VGA konektöründen video amplifikatörüne renkli çizgiler gelir; toprağa 1Kohm'luk bir direnç, akımı video amplifikatör girişine düşürür. Çıkış tarafında bir seri direnç, akımı arcade CRT'ye düşürür.

- senkronizasyon hattı bir şekilde daha "karmaşık": VGA'dan ayrı senkronizasyon, önce kompozit yapılır, ardından Arduino DUE özelliklerine (3.3V mantığı) uymak için bir voltaj bölücü tarafından düşürülür. Voltaj bölücü, 5V senkronizasyon sinyali varsayılarak hesaplanır.

- video amplifikatörü (THS7374) 3,3V veya 5V ile çalıştırılabilir; 5V'da güç vermenin daha geniş bir giriş voltajı/sinyal aralığına izin vermesi ve THS7374'ün 5V'da sıkılmış olsa bile 3.3V ile kontrol edilebilmesi, 5V yoluna gittim.

- video topraklaması, arduino DUE topraklaması, THS7374 topraklaması ve jamma konnektörü topraklaması kısa devre.

- Arduino DUE 5V ve Jamma 5V hatları KISA DEVRE YAPILMAMALIDIR.

- USB kablosundan ses amfisini sıkmayın: akım limitleri nedeniyle bunun için harici bir kaynağa ihtiyacınız var (yani PC ATX PSU). Bunu yapmak USB bağlantı noktanıza ve hatta PC'nize zarar verir.

VGA konektörü: bir uyarı

Yakın zamanda jammarduino DUE ile kullandığım bilgisayarı güncelleme fırsatım oldu. Daha önce iki farklı PC'de denemiş olmama rağmen ikisi de aynı aileden ATI kartları kullanıyordu (ATI 9250 ve 9550). Yeni PC, tek bir DVI analog çıkışlı (VGA yok) bir HD5750 ile donatıldı. Bu beni (pasif) bir DVI - VGA adaptörü kullanmaya zorladı. Eh, biraz uğraştıktan sonra, adaptöre bağlı VGA kablosunun, web'deki çoğu şemada bildirildiği gibi 6'dan 10'a kadar olan pinlere değil, çalışması için yalnızca VGA konektörünün pin 5'ine bağlı toprağa sahip olması gerektiğini fark ettim. Video kartınızdan herhangi bir senkronizasyon sinyali görememeniz durumunda bunu aklınızda bulundurun.

3. Adım: Taslak/Kod

Çizim/Kod
Çizim/Kod

Önce Arduino IDE'yi kurmalısınız; SAM Cortex M3 Core'u da kurmalısınız (varsayılan olarak mevcut değildir). Son olarak, Arduino DUE sürücülerini yükleyin. En güncel bilgiler için resmi "Arduino Due ile Başlarken" eğitimine bakın.

Arduino DUE'nuza yüklemeniz gereken çizim burada ektedir. Arduino IDE'ye "jammarduinoDUE.ino" dosyasını açın ve yükleyin, ardından "programlama" portu üzerinden arduino DUE'ye yükleyin. Çizim başarıyla yüklendikten sonra, USB kablosunu "programlama" bağlantı noktasından çıkarın ve Arduino DUE'yi "Yerel USB" bağlantı noktası üzerinden bağlayın, aksi takdirde kodun giriş kısmı çalışmayacaktır.

Temel olarak, Arduino DUE, senkronizasyon frekansını ölçer ve düşük çözünürlüklü bir CRT için senkronizasyon çok yüksek olduğunda video amplifikatörünü devre dışı bırakır. Arduino DUE, kontrol panelinden gelen girişleri de yönetir ve belirli bir tuşa basıldığında varsayılan MAME tuşlarını gönderir. Ticari arayüzler gibi bir kaydırma işlevi de (P1 BAŞLAT düğmesi basılı tutularak etkinleştirilir) dahildir.

Tabloda varsayılan tuş haritası. Varsayılan anahtar haritasını değiştirebilir veya isteğinize göre doğrudan kroki üzerine düğmeler ekleyebilirsiniz.

Örneğin, emülatörünüze ses kontrol tuşları atamak istiyorsanız, önce emu tuşları menüsünde bu tuşları (ses açma için "+" tuş takımı ve ses kısma için tuş takımı "-" diyelim) tanımlamanız gerekir; ardından ses artırma veya azaltmanın atanmasını istediğiniz düğmelere kaydırılan tuşu ekleyin. Diyelim ki shift tuşuna ve Player 1 düğmesine 3 basarak sesi artırmak istiyorum. Satırı değiştireceğim.

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

ile

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

Bu "223", "+" tuş takımı için ASCII karakter kodudur.

Bir alıştırma olarak "-" (ya da tercih ettiğiniz her şeyi) "ses kısma" işlevine nasıl atayacağınızı anlamanıza izin vereceğim (İpucu: ASCII kodu 222):)

Lütfen MAME'de genel öykünme hacmini değil, yalnızca hizmet modu hacmini atayabileceğinizi unutmayın; bu, öykünme kartının yazılım ses düzeyi denetimine izin vermemesi durumunda ses düzeyinin etkilenmeyeceği anlamına gelir.

Adım 4: Giriş Gecikmesi Nedir?

Kodun ne kadar gecikme yaratabileceğini görmek için bazı testler yaptım; peki, aynı anda 3 düğme göndererek, tam bir döngünün yürütülmesi yaklaşık 4 ms sürer, 33 ms'den çok daha az bir kare 30 FPS'de sürer.

Adım 5: Jamma Yarış Dolapları Ne Olur?

Jamma Yarış Dolapları Ne Olur?
Jamma Yarış Dolapları Ne Olur?

Potansiyometre Tekerleği

Kabininiz bir yarış kabiniyse, direksiyon potansiyometre tabanlıdır (kontrol panelinin arka tarafında 5Kohm'luk bir potansiyometre görebilirsiniz).

Öncelikle Joystick kütüphanesini indirip kurun (bugünkü kütüphanenin sadece 1. versiyonunun arduino DUE ile uyumlu olduğu söyleniyor ama yine de çok iyi bir kütüphane).

Ardından, tekerleği kolayca kullanabilmek için 4. Adımdaki çizime takip eden birkaç satırı ekleyin (çizgilerin nereye yerleştirileceği size bir alıştırma olarak bırakılmıştır…)

#Dahil etmek

int ölüZone = 0;

geçersiz kurulum() {

Joystick.begin();}

boşluk döngüsü () {

int readPot = analogRead(A3);

int tekerlekPos = map(readPot, 0, 1023, -127, 127);

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

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

}

Gördüğünüz gibi, gerekirse bir ölü bölge ayarlayabilirsiniz (iyi çalışan bir arcade tekerleğinde onu sıfıra ayarlamak en iyisidir).

Potansiyometreyi Arduino DUE'ye bağlamak basittir: potansiyometrenin yan pinleri +3.3V ve GND'ye gider, silecek pini bir arduino DUE analog portuna gider (referans için resme bakın). Burada analog pin 3'ü (A3) tekerlek potansiyometresinin sileceği girişi olarak tanımladım, ancak ihtiyaçlarınıza en uygun analog pini ayarlayabilirsiniz.

Not: Yarış kabinlerindeki pedalların genellikle bir potansiyometre ile kontrol edildiğini, teknik olarak tekerleklerin ve pedalların farklı bir şekle sahip aynı cihaz olduğunu biliyor musunuz? Bu, buradaki kodun orijinal arcade pedallarını da kontrol etmek için kullanılabileceği anlamına gelir;)

Optik Tekerlek

Direksiyonunuz optik ise, başlangıç taslağında küçük bir değişiklikle yine kolayca kullanılabilir.

Optik Arcade kodlayıcılar (Taito iplikçiler, Atari tekerlek kodlayıcılar vb.) için çok yaygın bir pin çıkışı:

1. OptoA ÇIKIŞI

2. +5V

3. GND

4. OptoB ÇIKIŞI

2. ve 3.'ü Arduino DUE 5V ve GND'ye ve 1. ve 4.'ü istediğiniz herhangi bir dijital pime bağlayın, optik kodlayıcıdan 5V çıkışını 3.3V arduino DUE'ye düşürmek için bir voltaj bölücünün gerekli olduğuna dikkat edin.. OptoA ve/veya OptoB 5V çıkışlarını doğrudan arduino DUE giriş pinlerinize göndermeyin, aksi takdirde bu girişleri ve hatta tüm kartı kızartırsınız. Uyarıldın.

Buradaki örnek çizimde, optik çıkış A ve optik çıkış B olarak dijital pin 2 ve dijital pin 3'ü kullanacağım.

#Dahil etmek

boolean optA_state = YÜKSEK;

int xAxisMov = 2;

geçersiz kurulum() {

pinMode (2, INPUT_PULLUP); //OptA

pinMode (3, INPUT_PULLUP); //OptB

fare.başla();

}

boşluk döngüsü () {

if (optA_state == YÜKSEK && digitalRead(2) == DÜŞÜK){

optA_state=!optA_state;

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

Bu, düşük çözünürlüklü 1X Sayma optik kodlamasıdır. Arcade uygulamaları için fazlasıyla yeterli, ancak bir kod satırı ekleyerek çözünürlüğü kolayca artırabilirsiniz.

Not: Optik atari tekerleklerinin ve atari çarklarının teknik olarak farklı bir şekle sahip aynı cihaz olduğunu biliyor muydunuz? İztoplarının teknik olarak 2 eksenli bir spinner olduğunu biliyor muydunuz? Bu, buradaki kodun orijinal arcade spinner'larını ve birkaç kolay değişiklikle iz toplarını kontrol etmek için kullanılabileceği anlamına gelir;)

Adım 6: Biraz Resim Veya Olmadı

Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!
Biraz Resim Veya Olmadı!

İşte yaptığım kalkanın bazı resimleri. Bu yüksek seviyeli bir iş değil (bahse girerim, profesyonel değilim), ama jamma Atari Dolabımda %100 sallanıyor!

Önerilen: