Joystick trzyprzyciskowy by Sikor 2009-04-07 00:51:17
Dawno, dawno temu, w nie tak odległej galaktyce, około 2000 roku
jakoś, a może ciut dawniej, zastanawiałem się, dlaczego w Atari
korzysta się z joysticka który ma tylko jeden przycisk fire.
Troszkę się nagłowiłem jak zrobić więcej i postanowiłem to
sprawdzić w praktyce. W tym celu użyłem płytki uniwersalnej, 7
microswitchy, 2 oporników (właściwie to więcej, ale o tym później),
kabla typu "skrętka", który do testów był wystarczający oraz wtyku
żeńskiego DB9, rozmontowanego z wtyczki DB9 czyli standardowego
RS232, do dostania w każdym sklepie.
Początkowo chciałem zrobić joystick z dodatkowymi dwoma klawiszami
fire. Wykonanie kierunków i standardowego fire to pikuś, ale co
dalej - czego użyć jako drugiego i trzeciego fire? Przycisku PTRIG
od wiosełek (ang. paddle) się nie dało użyć, choć takie było
początkowe założenie. I olśnienie: PTRIG nie użyję, ale mogę użyć
samego PADDLE. Polutowałem na szybko i... kicha, nie działało.
Wtedy nie było tak łatwego dostępu do sieci, więc Google moim
przyjacielem nie mógł być. Za to była literatura. Wyczytałem, że
wiosełka działają na zasadzie oporu, więc domyśliłem się, że trzeba
dać opornik. I tu pojawił się problem, bo co Atari to inny odczyt.
Metodą prób i błędów dałem oporniki 1000Ω. I to mi zadziałało z
każdą atarką. W końcu miałem manipulator dźwigniowy, jak kiedyś
spolszczano joystick, z trzema przyciskami fire.
W jaki sposób korzystać z takiego joya? Tak wygląda przykładowy
program testowy dla drugiego portu joysticka:
Pokazuje nam odpowiednie odczyty po podłączeniu urządzenia. Ale,
jak napisałem wyżej, każda atarka może dawać inny odczyt. Więc ja w
programie nie ustawiałem wartości dla fire numer 2 i fire numer 3,
tylko zastosowałem pewien trick. Po prostu ustawiłem pewien próg i
to działa z każdym komputerem. Był nawet projekt gierki, którą
pisałem z Mikerem, a która korzystała z tego ustrojstwa. Gdzieś
może są i źródła.
Czy to się może przydać? Myślę, że do nowych produkcji tak. Na
przykład wyścigi: kierujemy standardowymi wychyleniami joya,
przycisk fire może być hamulcem, drugi i trzeci fire - skrzynia
biegów (bieg w górę, bieg w dół).
Czy można użyć tego pomysłu we własnym zakresie? Powiem tak: jak
ktoś robi dla siebie, udzielam błogosławieństwa. Jak by ktoś chciał
ten sposób zastosować komercyjnie? Hmm, proszę o kontakt ze mną, na
pewno się dogadamy. O ile nie zapomnę to zabiorę prototyp na
Grzybsoniadę. Tylko w celach poznawczych dla elektroników.
Czy da się zrobić w ten sposób więcej przycisków? Da się, tylko
trzeba odpowiednio dobrać opory, aby działało z każdym
egzemplarzem. A to wymaga testów na wielu egzemplarzach, których
nie mam.
sikor 2009-04-07 05:40:45
Mała poprawka. Użyłem opornika 1000 Om - zjadło mi zero przy pisaniu i teraz dopiero w artykule zobaczyłem na stronie (paski: brązowy-czarny-czerwony-złoty). 100 Om był za mały. Reszta się zgadza, na Grzybsoniadzie pokażę (jak nie zapomnę zabrać). Rozyk 2009-04-07 13:28:23
Z tego co pamiętam porty wiosełek mają wejścia A/C o 7-bitowej rozdzielczości, czyli rozpoznają 128 stanów. Myślę, że odpowiednio dobrana drabinka rezystorów może nam dać z 15 przycisków na przetwornik. Razy 4 wiosła będzie chyba ze 60........ Jeśli będzie to potrzebne komuś kiedyś do czegoś mogę wykonać testy praktyczne na kilku atarynkach. sikor 2009-04-07 17:25:28
Tak, masz rację. Tu jest tylko na jednym porcie (więc 2 wiosełka). Jednak wartości opornika szukałem dość długo, aby zawsze mieć w miarę powtarzalny wynik. Dlatego to co napisałeś - trzyma się kupy. Tylko - czy tyle przycisków się do czegoś przyda w praktyce? Jeśli tak - może warto pomyśleć. PSH 2009-04-07 21:07:06
Sikor - wartosc 100 poprawilem na 1000, informuje dla porzadku.
Rozyk - pewnie, czemu nie. Zawsze jakas konkretna wiedza. zilq 2009-04-07 21:15:17
hehe... zawsze mnie jakoś irytował fakt, że w joyach do atari był jeden przycisk FIRE (podobnie jak myszki w starych makówkach ]:-> ) sikor - pytasz, czy tyle przycisków się do czegoś przyda. Odpowiedź w sumie prosta. W dotychczasowych produkcjach nie, ale w nowych, mogłoby. Takie Playstation ma w swoich padach 4-8 buttonów (jak nie więcej - nie pamiętam) i jakoś wykorzystują je wszystkie. Famicon (bodajże, bardziej znany u nas jako Pegasus) miał 4 i też skutecznie je wykorzystywali. Możnaby pomyśleć nad interfacesem-przelotką do takich padów, po co wymyślać koło na nowo GIT Patent ogólnie. marekp 2009-04-07 22:08:04
@Rozyk - Ale czy przy naciśnięciu kilku przycisków na raz te z mniejszą rezystancją nie "przysłoną" tych z większą? Kaz 2009-04-07 23:23:47
To moze zamiast pada od playstation skorzystac z pada od jaguara? Rozpowszechnienie moze nie takie, ale mozna kupic takie cos, a klimat scisle "atarowski" :). sikor 2009-04-08 10:04:12
A wiesz Kaz, że nawet o tym myślałem po posłaniu Ci artykułu. Dwa fire-y da się zrobić bezproblemowo (są wyprowadzone normalnie z JagPada, czyli drugi da się zrobić jak u mnie) - tylko muszę któregoś dnia podejrzeć, jak jest wyprowadzony trzeci (bo nie ma go wprost na wtyczce). Ale przypuszczam, że dałoby radę ;) mono 2009-04-08 13:13:58
@marekp: paddle daje wskazania 0..228 więc da się uzyskać rozdzielczość 7-bit - a to jest siedem przycisków, których stan odczytasz równocześnie dokonując rozbioru na bity wartości paddla (jeśli z paddla odczytasz 0..127); po prostu należy zrobić dac (covoxa) dołączonego wyjściem do paddla i na wejście podać binarne stany przycisków; można dla większej pewności te 7 bitów rozciągnąć na wartości 0..228 (przez dobranie wartości rezystorów) i potem programowo przetworzyć jakąś funkcją liniową (czyli coś odjąć i przez coś podzielić) Rozyk 2009-04-08 21:17:25
@marekp - nie pomyślałem o naciskaniu jednoczesnym. Mono ma rację - 7 bitów to 7 przycisków i oczywiście wszystkie ich kombinacje. Razy 4 to i tak 28 przycisków, czyli sporo. Co do testów, to mogę zrobić na live Atari, ale teoria mówi, że problemów nie będzie. Podłączałem już 12 przycisków klawiatury z odpowiednio dobraną drabinką rezystorów jednym kabelkiem do portu procesorów AVR (co prawda z 10-bitowum A/C)... sikor 2009-04-08 23:26:29
Co do JagPada mam złą wiadomość, niestety - trzeba by użyć demultiplexera (lub dekodera - nie znam się). W środku siedzi układ kodujący (ala chip od klawiatury) i niestety, wprost się nie da. Przypuszczam, że dla elektronika byłoby to z 5 minut robooty - wygląda to dość prosto. A wtedy można by użyć całej klawiatury z jagpada ;) sikor 2009-04-08 23:56:17
Tu można znaleźć więcej informacji na ten temat http://www.gamesx.com/controldata/ejp_faq.htm - jak przypuszczałem, potrzebny jest demultiplexer... Kaz 2009-04-09 01:20:18
A nie da sie wyrabac tego ukladu, zachowujac tylko mechanike pada i zrobic "po swojemu"? Przeciez niekoniecznie musi byc to tak jak w oryginale.
Druga rzecz, a jak jest zrobione CX85, ze obsluguje klawisze: http://atariki.krap.pl/index.php/CX85 moze polaczyc te dwie rzeczy w jedna? sikor 2009-04-09 07:40:21
@Kaz napisał: "A nie da sie wyrabac tego ukladu, zachowujac tylko mechanike pada i zrobic "po swojemu"? Przeciez niekoniecznie musi byc to tak jak w oryginale." - pewnie, że się da. Ale szkoda niszczyć PADa. Jest sposób do wykonania przejściówki (na 90%) baz demultiplexerea, ale wtedy mamy w Atari tylko jeden fire, jak w oryginale. Jak miałbym już niszczyć, to wolałbym inne :joye" i pady, a nie te od jaguara/ste. Co do klawiatury numerycznej: nie mam na czym przetestować, ale przypuszczam, że tam jest na zasadzie tego, co ja zrobiłem w joyu 3-fire, czyli odpowiednie wartości PADDLE - ale, jak piszę - to tylko moje przypuszczenia, nie mam na czym sprawdzić. sprae 2009-04-09 15:14:04
W końcowym okresie świetności pecetowego portu joysticka (zwykle sprzężonego z kartami dźwiękowymi) przestało starczać wejść (szczególnie dla rozbudowanych drążków lotniczych). Wtedy ktoś wymyślił, że port ten oferuje jeszcze UART dla interfejsu MIDI. Postanowiono więc zapakować do joya trochę więcej elektroniki i przesyłać dane szeregowo za pomocą trybu szeregowego tegoż portu. Może w Atari to by zdało egzamin? Układy AVR są dziś tanie, a takie ATMEGA168 ma 6 wejść analogowych po 10 bitów i jeszcze więcej cyfrowych. Łatwo programuje się pod avr-gcc. Ostatecznie można podłączyć nawet do SIO, ale żal wstecznej kompatybilności ;-). sikor 2009-04-09 18:13:48
Apro po CX85 - jest handler rozkodowany: http://atariwiki.strotmann.de/xwiki/bin/view/Code/CX85KeyboardHandler - jak sądziłem, używa paddle ;) A swoją drogą - można by to skopiować... mik 2014-02-26 22:43:40
W CX85 siedzi 16 klawiszowy enkoder 74C923. Gdyby użyć jeszcze jednej niewykorzystanej linii to można by zrobić 32 klawisze na jeden port.
A to już 2,5 oktawy klawiatury muzycznej.
Inna koncepcja to wykorzystać piny PORTA i STRIG na dekodowanie klawiatury i przycisków sterujących, a 4 PADDLE zostawić na potencjometry.