Witam, przedstawiam projekt konwertera umożliwiającego podłączenie dowolnego(chyba :P) pada USB HID do Atari.
Na chwilę obecną sprawdzałem z dwoma padami różnych firm i wychodzi na to, że wszystko działa (w trakcie testów).
Każdy nowo podłączony pad musi przejść proces mapowania przycisków.
Potrzeba mapowania zostanie zasygnalizowana 3 mrugnięciami dwóch niebieskich diod LED, po czym trzeba poczekać na zaświecenie wszystkich ledów i przechodzimy proces dla przycisków: góra, dół, lewo, prawo, strzał, automatyczne strzelanie (każdorazowe naciśnięcie przycisku na padzie objawi się zgaśnięciem prawej diody (patrząc od wejścia USB)).
Pomyślne zakończenie mapowania zostanie zasygnalizowane 2 mrugnięciami diod LED.
Konwerter posiada pamięć mieszczącą maksymalnie 4 skonfigurowane pady.
Konwerter obsługuje funkcję autofire, która pozwala na wybór częstotliwości od 2Hz do 10Hz (skok 2Hz) poprzez cykliczne naciskanie przycisku przypisanego do funkcji autofire (istnieje możliwość szybkiego wyłączenia poprzez naciśnięcie przycisku przypisanego do funkcji fire).
Jedyny widoczny na zdjęciach przycisk służy do wyczyszczenia skonfigurowanych padów (trzeba przytrzymać podczas uruchamiania urządzenia, do momentu naprzemiennego mrugania ledami).
Sercem konwertera jest moduł SeeedStudio XIAO SAMD21, ze względu na gotową implementację hosta USB i wsparcie dla środowiska Arduino. Niestety moduł posiada wadliwy bootloader i lubi się czasem całkowicie zawiesić, dlatego wsad wgrany jest z pominięciem bootloadera, jako programator posłużyło mi RaspberryPI + openocd.
Obudowa została wydrukowana przy pomocy drukarki 3D. Pliki STL w załączniku.
Projekt jest mocno hobbystyczny dlatego jakoś specjalnie nie przykładałem wagi do kodu jak i wykonania samego konwertera (technologia THT na płytce uniwersalnej 3cm x 7cm, wszystko można polutować rozgrzanym żelazkiem :P) + chciałem się wyrobić w miarę rozsądnym czasie.
W załącznikach udostępniam kody, schemat, pliki 3D obudowy + skompilowany wsad.
Tranzystory NPN pewnie nie są potrzebne (obstawiam, że wystarczą odpowiednie rezystory) więc jak ktoś chce to może sobie to jeszcze bardziej zmniejszyć :).