Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriProjeArcade kontrollerini usb'ye taşıma
Sayfa: [1] 2   Aşağı git
Yazdır
Gönderen Konu: Arcade kontrollerini usb'ye taşıma  (Okunma Sayısı 15285 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« : 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

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://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.



Ş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



Bu da 24 input sağlayan versiyonun benim kabine bağlı görüntüsü.



Bundan sonraki ilk iş 8 input sağlayan üstteki şemayı eagle'da çizip 4'lü panel halinde pcb'lerini üretmek.

* ProMicroJoy.zip (0.84 KB - Yükleme: 307 kez.)
* JoystickHID.zip (7.16 KB - Yükleme: 324 kez.)

* 20150713_002632.jpg (139.07 KB, 800x707 - Görüntüleme: 3348 kez.)

* 20150713_014702.jpg (47.62 KB, 600x748 - Görüntüleme: 3464 kez.)
« Son Düzenleme: Temmuz 13, 2015, 02:19:23 ÖÖ Gönderen: i_r_on » Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
yavuzg
Genel Yönetici
*****
Mesaj Sayısı: 5.894



Üyelik Bilgileri
« Yanıtla #1 : 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.
Logged

evreno
Deneyimli
*****
Mesaj Sayısı: 1.260



Üyelik Bilgileri
« Yanıtla #2 : 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
« Son Düzenleme: Temmuz 13, 2015, 10:36:34 ÖÖ Gönderen: evreno » Logged
barone
Üye
***
Mesaj Sayısı: 122



Üyelik Bilgileri
« Yanıtla #3 : 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.
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #4 : 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

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
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
evreno
Deneyimli
*****
Mesaj Sayısı: 1.260



Üyelik Bilgileri
« Yanıtla #5 : 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
« Son Düzenleme: Temmuz 13, 2015, 18:36:44 ÖS Gönderen: evreno » Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #6 : 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. Ancak sorun var.
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 )
« Son Düzenleme: Temmuz 13, 2015, 22:27:21 ÖS Gönderen: i_r_on » Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
evreno
Deneyimli
*****
Mesaj Sayısı: 1.260



Üyelik Bilgileri
« Yanıtla #7 : 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
Logged
evreno
Deneyimli
*****
Mesaj Sayısı: 1.260



Üyelik Bilgileri
« Yanıtla #8 : Temmuz 13, 2015, 22:28:20 ÖS »

Kahkaha
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #9 : 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
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
bluenipper
Yeni Üye
*
Mesaj Sayısı: 2


Üyelik Bilgileri
« Yanıtla #10 : 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.
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #11 : 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;
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
bluenipper
Yeni Üye
*
Mesaj Sayısı: 2


Üyelik Bilgileri
« Yanıtla #12 : Kasım 28, 2017, 11:13:43 ÖÖ »

tamam teşekkürler
Logged
evreno
Deneyimli
*****
Mesaj Sayısı: 1.260



Üyelik Bilgileri
« Yanıtla #13 : Kasım 28, 2017, 14:03:10 ÖS »

bu projeyi unutmuşuz yahu Kahkaha
ü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
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #14 : 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.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Sayfa: [1] 2   Yukarı git
Yazdır
Gitmek istediğiniz yer: