|
Konu Başlığı: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Temmuz 13, 2015, 02:04:40 ÖÖ Daha önce evreno'nun aşağıdaki başlığını bu konu için işgal etmiştim,
http://www.commodore.gen.tr/forum/index.php?topic=10323.90 (http://www.commodore.gen.tr/forum/index.php?topic=10323.90) Artık ayrı bir başlığa taşıma vakti geldi. Temel olarak aşağıdaki projeleri örnek aldım. http://www.imaginaryindustries.com/blog/?p=80 (http://www.imaginaryindustries.com/blog/?p=80) http://sweetlilmre.blogspot.com.tr/2015/01/arduino-pro-micro-arcade-controller.html (http://sweetlilmre.blogspot.com.tr/2015/01/arduino-pro-micro-arcade-controller.html) İlk projenin donanım bağlama gibi bir derdi olmamış çok özellikli bir joystick'i bilgisayara entegre etmiş sadece. İkincisi ise doğrudan arcade sistemler için yapılmış. Bir adet Arduino pro micro'da iki oyuncu için yeterli i/o pin bulunmadığı için bu işi iki tane Arduino pro micro kullanarak tamamlamış. Benim yaptığımın farkı ise input i/o pin kısıtlamalarını parallel to serial shift register (74hc165) kullanarak aşmak şeklinde. 2 digital i/o pin ortak bir şekilde tüm shift register'ların LATCH ve CLOCK pin'lerine gidiyor. Her bir shift register'ın çıktısı da ayrı i/o pin'lerden arduino'ya besleniyor. Bu şekilde LATCH ve CLOCK için kullandığımız i/o pin'lerinin source edebileceği akımın yettiği kadar shift register bağlayıp input sayısını ciddi bir şekilde arttırmak mümkün. Arduino tarafında shift register'larını okumak için kullandığımız ana döngüyü de 8 defa döndürmek yetiyor. Yaptığım denemede 3 adet shift register ile 24 input'u rahatlıkla halletti. 1 adet shift register daha ekleyip 32, dahasını ekleyip 40-48 vesaire arttırmak mümkün. 32'ye kadar olan input'lar buton şeklinde. 32'den sonrası joystick'in butonlar dışındaki diğer kontrollerine aktarmak lazım. Emülatörlerde yaptığım denemelerde butonların yön tuşlarına verilmesinde bir sıkıntı bulunmuyor. Tek bir shift register için şema şu şekilde. (http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=10820.0;attach=11965;image) Şemada Pro micro I/O 1 diye verdiğim pin arduino sketch'i içinde D10'a bağlı olması gerekiyor. Diğerleri de bununla aynı olacak ve onlar da D7 ve D8'e bağlanacaklar. Pin'lerin seçiminde özel bir durum yok sadece ben geliştirme sırasında bir ara bendeki pro micro'dan kıllandığım için değiştirme ihtiyacı hissettiğim için öyleler. Verdiğim sketch'i derleyebilmeniz için aşağıdaki klasördeki USBAPI.h ve HID.cpp dosyalarını JoystickHID.zip içindekilerle değiştirmeniz gerekiyor. (Verdiğim dosyalar Arduino IDE 1.6.3 için, farklı bir versiyondaysanız ya dosyaları değiştirmek yerine yamamanız ya da 1.6.3 yükleyip onunla verdiğim dosyaları kullanarak yapmanız lazım) Arduino\hardware\arduino\avr\cores\arduino Son olarak, Tek shift register ile tek joystick ve Mario -p_9mXEEVyw Bu da 24 input sağlayan versiyonun benim kabine bağlı görüntüsü. (http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=10820.0;attach=11963;image) Bundan sonraki ilk iş 8 input sağlayan üstteki şemayı eagle'da çizip 4'lü panel halinde pcb'lerini üretmek. Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: yavuzg üzerinde Temmuz 13, 2015, 03:23:09 ÖÖ Güzel çalışma...
Player 1 ============================ - 4 x yön - 3 x Ateş (JAMMA Standard) - 3 x Kick (Kick harness) - Coin - Start ---------------------------- Toplam: 12 digital kontrol Tasarımı yapmışken 4 Player'lı bir kabini bile destekleyecek 48 input'lu bir model yaparsan süper olur. Bir kaç sorum var; 1) Pro micro kullanmanın lojistik faydalarını kabul ediyorum (USB desteği, programlama kolaylığı v.s.). Fiyatı nedir bunun? 2) Analog giriş, yani potansiyometreli kontroller için birşeyler düşünüyormusun? Son soruyu sorma nedenim eğer analog desteklersen ortaya çıkardığın ürün hem i-pac hem de a-pac ticari ürünlerinin bileşke fonksiyonalitesine sahip olması açısından çok güzel bir "all-in-one" olacaktır. Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: evreno üzerinde Temmuz 13, 2015, 10:35:02 ÖÖ bende ayrı bir başlığa alalım projeyi diyecektim sana, sen almışsın
öncelikle eline sağlık tek modül ile shift register sorunsuz çalışıyorsa bu şekilde kullanmak da avantajlı olabilir diye düşünüyorum kabinin restorasyon işlerini bitirdim sayılır, bende projeyle ilgilenebilirim artık video amfi ve sync birleştirme kısmını hazırlarım en kısa zamanda senin joystick çalışmanı da aynı devrede bütünleştirip tek pcb olarak ortaya bir şey çıkardığımız zaman süper olacaktır yavuz üstadın analog için bahsettiği çalışmada yapılabilir diye düşünüyorum pwm input kesin vardır bu mcu da devre tasarlanırken jamma standardına uygun yapmak lazım 4 x yön (jamma standart) , 3 x buton (jamma standart) , 1 x coin (jamma standart) , 1 x start (jamma standart) , player 2 de aynı şekilde 1 x service (jamma standart) , 1 x test (jamma standart) , diğer 3 butonun 2 si için devre üzerinde jumper konulabilir jumper takılı ise jammadan geldiği düşünülür ayrıca 3 adet klemens ile kablo bağlantı yeri yapılabilir jammadan gelmiyorsa kablo girişinden alınır buton girdisi jamma üzerinde maksimum 5 buton yapıyorlar 5 i aşıyorsa kickharnes üzerinden alınıyor Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: barone üzerinde Temmuz 13, 2015, 10:55:31 ÖÖ 1) Pro micro kullanmanın lojistik faydalarını kabul ediyorum (USB desteği, programlama kolaylığı v.s.). Fiyatı nedir bunun? Yazılım ve donanım olarak açık kaynak kodlu projeyi desteklemek adına orijinal Arduino alınırsa resmi sitesindeki satış fiyatı 18 Euro (53-55 TL). Türkiye'de orijinal ürün satan benim bildiğim Robotistan var. Orada da headerları lehimlenmemiş olarak 66 TL'ye satılıyor.Bu konularla uzaktan da olsa ilgilenen arkadaşların bir adet orijinal Arduino boardu alması veya projeye bağışta bulunması elbette iyi olacaktır. Neticede ortaya çıkan dışsal faydadan hepimiz istifade ediyoruz. Orijinal olmayan ürünler için yurtiçi fiyatlarını araştırmaya gerek görmüyorum. Aliexpress fiyatlarına geldiğimizde olay cazipleşiyor. Ortalama 3.5-5 Dolar arasında yani ~10-15 TL gibi bir fiyattan temini mümkün. Ticari ürüne dönüştürülmeyecek ve açık kaynak kodlu hobi projesi olarak kalacaksa, bence Arduino fiyatları, sağladığı kolaylıklar göz önüne alındığında oldukça makul seviyede. Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Temmuz 13, 2015, 14:36:03 ÖS @yavuzg : Input sayısı arttırılabilir. İlk linkini verdiğim projede USB standardının 64 butona kadar desteklediği yazılmış. Bir ara deneyeyim bunu. Shift register sayısını arttırmanın atmega32u4'ün tek bacaktan source edebileceği maksimum akım limitine takılma ihtimali var. Bu durumda araya transistör falan atmamız gerekebilir.
Arduino prototip çıkarmayı kolaylaştırıyor aslında. Esas uygulamasını çıplak çiple kendi board'umuz üstünde yapmak maliyeti düşürür. Netice itibariyle aynı maliyete de gelebilir özellikle üretim az sayıda olursa. Fiyat olarak arduino micro'ların 5 tanesine 19 dolar verdim shipping dahil. Aşağı yukarı 10 tl gibi bir rakam yapıyor. http://www.aliexpress.com/item/Free-Shipping-5-pcs-Mini-Leonardo-Pro-Micro-ATmega32U4-5V-16MHz-Module-For-Arduino-Best-Quality/32269794147.html (http://www.aliexpress.com/item/Free-Shipping-5-pcs-Mini-Leonardo-Pro-Micro-ATmega32U4-5V-16MHz-Module-For-Arduino-Best-Quality/32269794147.html) Analog kontrollere gelince bu konuda hiç tecrübem yok. Üzerindeki voltaj ölçülen bir potansiyometre de analog kontrol sayılır herhalde değil mi? Pro micro üstünde 4 adet 10 bitlik adc var. Bununla ancak iki oyuncu için x/y ekseninde toplam 4 analog kontrol desteklenebilir. Daha ötesi için spi/i2c ile bağlanılabilen ve birden fazla input'u destekleyen adc lazım. Ya da analog sinyalleri de mux/demux edecek bir yapı lazım. Muhtemelen yapılabilir. Max kaç adet analog input gerekir ortalama ve ortalama üstü analog kontrol içeren kabin için? işin içine analog girdiği zaman hassasiyet önem kazanıyor. Çapaklı elektrik işi bozar. Bize bir adet osiloskop yolu gözükür :) @evreno : 4 adet analog pin var, her birini 10 bit hassasiyetle okuyabiliyorsun. Aslında devre üstünde özel bir işaretlemeye bence gerek yok. İşaretlersen default bir keymap falan yapmış olman lazım. Kullanıcı kendisi emülatör üstünde ayarlayabilir. (Saçma bir butonun basılı kalmamış olması lazım benim durumumda olduğu gibi) @barone : benim işi ticari ürüne götürebilecek vaktim ve deneyimim yok zaten. alır biri buradan yürür götürürse de eyvallah deyip destek olmaya çalışırım :) Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: evreno üzerinde Temmuz 13, 2015, 18:35:07 ÖS Analog okumanın gerektiği oyunlar için 4 input bence yeterli olur
araba yarışlarında direksiyon analog oluyor 1 input gaz fren bazı oyunlarda analog bazılarında normal buton gibi 2 input da ordan gelse 3 input araba oyunlarına yeter silahlı oyunlarda silahın konumu için analog olarak her oyuncuya 2 input gerekli toplam 4 input düğmeler normal buton oluyor onlarıda karşılar 4 input birçoğunu karşılar sanırım daha çok oyunları tanıyan arkadaşlar daha iyi bilgi verebilirler geliştirme için çakma ps2 josticklerinde bulunan analog kolaların podlu elemanları kullanılabilir aslında ilerleyen zamanlarda incelenebilir bence bu yapı hatta bugünden belki işlemcinin analog pinlerini bu işe rezerve etmek doğru olabilir, analog pinler rezerve edilince diğer pinler butonlar için yeterli olur mu? bahsettiğim konuyu yanlış anladın sanırım anlatmak istediğim kick harnes için devrede ek girişler bulunmalı ama jammadan da gelebilir mesela MVS 4. butonu jammadan kullanıyor butonun nerden geldiği ayarlanamazsa jamma üzerinde boşta kalan pinler gnd ye verilebiliyor bu durumda buton basılı zanneder hep Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Temmuz 13, 2015, 22:19:38 ÖS @evreno : Benim düşüncem de jamma edge konnektör şeklinde bir şey yapmak yok aslında. Kablolama sistemden sisteme farkettiği için kullanıcı kendi fingerboard'una kendi bağlasın jamma'dan gelenleri. Standart dışı olanları da boşta kalan input'lara bağlasın.
Bu arada bugün benim kabinin kablolamasını biraz fix ederek bir deneme daha yaptım. İlk oynadığımda sorun olmadığını düşünmüştüm. Shadow dancer oynadım biraz, genelde sorun yok gibi gözüküyor ancak üst platforma çıkmak için üst yön tuşuna ve zıplamaya aynı anda bastığımda algılamıyor oyun. Sadece zıplıyor. İki sebebi olabilir, 1. Bende tüm kontroller joystick'teki butonlara karşılık geldiği için oyun driver'ı buton ile yön kontrollerine özel anlam veriyor olabilir. 2. Pro micro kontrolleri çok hızlı poll ettiği için inputlardan biri her türlü diğerinden önce gidiyor ve bu da sorun yaratıyor. Bakayım ikisi ile ilgili de daha sonra denemeler yapacağım vakit bulunca. İnşallah ikincisidir problem, ilki ise iş aynı pro micro içinde iki joystick hid yaratmaya götürür. Allah müstahakımı versin.. Sorun falan yokmuş. Üst yönü hiç bir tuşa map etmemişim :)) Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: evreno üzerinde Temmuz 13, 2015, 22:27:25 ÖS Ok anladım yapmak istediğini jpac tarzı olacak yani
Normal pc oyunu mu oynuyorsun yoksa mame mi Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: evreno üzerinde Temmuz 13, 2015, 22:28:20 ÖS :) :D
Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Temmuz 13, 2015, 22:42:39 ÖS Aslında kendim aliexpress'te bu tarz ürün bakarken edge connector şeklinde olanı aramıştım bir taşla iki kuş vurma hevesiyle ancak jamma standardında 3'ten fazla buton desteklenmemesi bağlantıları klemens seviyesinde bırakmanın daha uygun olacağını söylüyor.
Denemeleri mame ile yapıyorum. Daha önce Nes emülatörü ile denemiştim. Zsnes ile de bir deneme yaptım ancak onda ne hikmetse ayarlayamadım. Benim kabinin kablolamasındaki sıkıntıdan dolayı tüm butonları aynı anda deneme şansım olmadı. Bağlanmış olan kablolarla hanımla bir street fighter yapayım yine ben, hadouken shouryuken falan sağlam mı denemek lazım :) Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: bluenipper üzerinde Kasım 28, 2017, 10:16:38 ÖÖ merhaba konu eski ama fikir çok güzel bende harfiyen uyguladım ama derlemede söyle bir hata alıyorum
ProMicroJoy.ino: In function 'void update_stick()': ProMicroJoy.ino:69:4: error: 'oldValue' was not declared in this scope Derleme sırasında hata oluştu. Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Kasım 28, 2017, 10:31:43 ÖÖ merhaba konu eski ama fikir çok güzel bende harfiyen uyguladım ama derlemede söyle bir hata alıyorum ProMicroJoy.ino: In function 'void update_stick()': ProMicroJoy.ino:69:4: error: 'oldValue' was not declared in this scope Derleme sırasında hata oluştu. Merhaba, Kodu sanırım fazla kırpmışım. Aşağıdaki satırı en üste ekleyip bir daha deneyebilir misiniz? Kod: uint32_t oldValue = 0; Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: bluenipper üzerinde Kasım 28, 2017, 11:13:43 ÖÖ tamam teşekkürler
Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: evreno üzerinde Kasım 28, 2017, 14:03:10 ÖS bu projeyi unutmuşuz yahu :D
üzerinden 2.5 sene geçmiş iron son durum da sıkıntı varmıydı kontrol kısmında? gecikme yada bounce falan sorunu sıkıntısız çalışıyorsa @yavuzg üstadın kullandığı video amfi entegresi ve sync birleştirme işlemini aynı karta toplayıp bir nevi jpac yapabiliriz Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Kasım 28, 2017, 14:53:30 ÖS @evreno : 24 input'ta bazen hatalı algılamalar oluyordu hatırladığım kadarıyla. Sonra zaten bir sürü konu oldu, bir kenarda kaldı. Şu an elim Kicad'e falan alıştı. Bir ara kendime task olarak atayayım bu shift register'lardan küçük birer modül oluşturma işini. Tasarlaması kolay, göndeririz Çin'e üretilsin diye.
Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: Levent (Lvnt) üzerinde Kasım 28, 2017, 22:41:21 ÖS ps1/psx'in kontrolcü uçları doğrudan cpu'ya giriyor. arduino usb derken gecikme farkedilir olmasın?
Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: i_r_on üzerinde Kasım 28, 2017, 23:56:29 ÖS ps1/psx'in kontrolcü uçları doğrudan cpu'ya giriyor. arduino usb derken gecikme farkedilir olmasın? Butonları okuma işi mikrosaniyeler mertebesinde. Arduino pro micro üstündeki usb kontrolcüsünün getirdiği bir gecikme olabilir ama var mıdır bilmiyorum. Videodaki mario'yu pc'ye bağlı şekilde oynarken ben hissetmedim :) Çok sayıda analog okuma söz konusu olsa süre artabilir zira atmel işlemcilerin adc'leri biraz yavaş. Kaç mhz idi hatırlamıyorum ancak arduino'nun clock hızında shift register N defa shift ediliyor. 1mhz hızında shift etsek 24 shift ile 41666 kez okuma yapmak mümkün. Bu değer 1ms'nin bile çok altında. Ben hatta shift register'a erişirken sağlam olsun diye 20 mikrosaniye delay bile koymuşum :) Konu Başlığı: Ynt: Arcade kontrollerini usb'ye taşıma Gönderen: Simon (Özay Turay) üzerinde Mart 24, 2019, 19:05:15 ÖS Arduino XInput Library ile işler daha da kolaylaşmış Pro Micro için. Çok incelemedim ama yanlış görmediysem Analog desteği de var daha önce YavuzG'nin sorduğu soruya cevap olarak. ;)
https://github.com/dmadison/ArduinoXInput (https://github.com/dmadison/ArduinoXInput) Kaynak: https://www.partsnotincluded.com/tutorials/how-to-emulate-an-xbox-controller-with-arduino-xinput (https://www.partsnotincluded.com/tutorials/how-to-emulate-an-xbox-controller-with-arduino-xinput) |