Arduino = gamepad/joystick? - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Arduino = gamepad/joystick? (/watek-arduino-gamepad-joystick) Strony:
1
2
|
Arduino = gamepad/joystick? - Filip - 02-01-2017 Witam wszystkich, jestem nowy w temacie Arduino jak i na forum Nie znam się za bardzo na elektronice, więc szukam praktycznego rozwiązania, mam nadzieję że uzyskam pomoc. Potrzebuję zbudować 6-ścio lub maksymalnie 8 przyciskowy kontroler usb na bazie Arduino Uno. Podstawową wiedzę i narzędzia posiadam, znam PHP i Pawn, zauważyłem że Arduino programuje się podobnie jak ActionScript więc myślę że zaprogramowanie 6 do 8 przycisków nie będzie stanowiło problemu. Na początek potrzebuję bardzo proste rozwiązanie które będę rozbudowywał. Są to przyciski stosowane w grach zręcznościowych, typowy dwu stykowy przycisk, przykład: https://botland.com.pl/duuuze-przyciski/3658-push-button-6cm-zielony-wersja-eko2.html W opisie produktu jest nawet przykładowy program napisany pod Arduino No i pytanie, czy dobrze trafiłem? Czy Arduino Uno pozwoli mi na zbudowanie kontrolera z użyciem wyżej pokazanych buttonów? A może jest prostsze rozwiązanie? Chodzi mi dokładnie o to by po podłączeniu Arduino przez USB, system Winodws wykrył go jako kontroler gier USB i abym miał możliwość zaprogramowania go jak zwykłego kontrolera już z poziomu aplikacji/gry/softu. Wykonałem taki kontroler z płytki od chińskiej klawiatury usb (tzw. usb keyboard hack), działa wiadomo bez zarzutu lecz ma ograniczenia - właściwie brak możliwości rozbudowy no i na ten moment szukam rozwiązania profesjonalnego z możliwością rozbudowy. Dam radę z Arduino czy szykować 200$ na gotowca z Usa? Budował ktoś podobny emulator na bazie Arduino? Z góry dzięki za pomoc i informacje, Pozdrawiam, Filip. RE: Arduino = gamepad/joystick? - Filip - 02-01-2017 Znalazłem taki artykuł, myślę że sobie poradzę z 6 przyciskami. Cytat:Out of the box the Arduino Leonardo and the Arduino Micro appear to the host computer as a generic keyboard and mouse. This article discusses how the Arduino Leonardo and the Arduino Micro can also appear as a generic Game Controller or Joystick. This project will only work with Arduino products based on the ATmega32u4 microcontroller (i.e. the Arduino Leonardo and the Arduino Micro). It will not work with the Arduino UNO, because it is based on the ATmega328 microcontroller. http://www.instructables.com/id/Arduino-LeonardoMicro-as-Game-ControllerJoystick/?ALLSTEPS Ktoś ma więcej info to poproszę linki Pzdr. RE: Arduino = gamepad/joystick? - Filip - 11-01-2017 Witam ponownie, zakupiłem Arduino Leonardo. Zainstalowałem odpowiednie biblioteki i zainstalowałem program z dostępnych przykładów: Kod: // by Matthew Heironimus System Windows wykrywa Arduino jako Gamepad, w powyższym przykładzie są 4 przyciski i wszystko działa jak należy, wykorzystałem piny od 9 do 12 i GND. Teraz jednak chcę zrobić nie 4 lecz powiedzmy 16 przycisków, wytłumaczcie mi na jakiej zasadzie będzie to podłączone skoro teraz wykorzystuje 1 pin pod 1 przycisk to pod 16 braknie pinów, wybaczcie za to pytanie, pewnie jest śmieszne ale cóż. Proszę o przykład jakiś. Nie wyobrażam sobie 32 przycisków, osi X, Y, Z itd, gdzie i jak to podpiąć? W przykładzie USBJoystickTest.ino wykorzystane są tylko 2 piny? Kod: pinMode(A0, INPUT_PULLUP); Proszę mi to wytłumaczyć jak dziecku, dziękuję Pozdrawiam. RE: Arduino = gamepad/joystick? - namok - 11-01-2017 1. Biblioteka nie korzysta z fizycznych pinów 2. Nigdzie nie jest napisane że 1 pin to 1 button. Poczytaj o klawiaturach matrycowych. W dokumentacji jest napisane: Cytat:Joystick.setButton(byte button, byte value) RE: Arduino = gamepad/joystick? - Filip - 12-01-2017 Dzięki za odpowiedź. Gdybym skorzystał z nakładki np: https://botland.com.pl/klawiatury/4468-klawiatura-matryca-4x4-tact-switch-wyjscie-analogowe.html?search_query=klawiatura&results=113 Mogę to zaprogramować przy użyciu bibliotek Joystick? Będę mógł wcisnąć kilka przycisków jednocześnie? Czy jednak nie będzie możliwości prawidłowego odczytania napięcia? Pozdrawiam. RE: Arduino = gamepad/joystick? - namok - 12-01-2017 Z klawiaturą analogową moży być ciężko zdekodować naciśnięcie 2 przycisków jednocześnie ale na pewno można to zrobić z klawiaturą matrycową binarną: https://botland.com.pl/klawiatury/2895-klawiatura-matryca-16-x-tact-switch.html używając bibioteki Keypad: http://playground.arduino.cc/Code/Keypad RE: Arduino = gamepad/joystick? - Filip - 21-01-2017 Witam ponownie, klawiatura matrycowa fajnie działa na tych bibliotekach Keypad, dzięki za radę. Zaprogramowałem 16 przycisków, użyłem biblioteki Keypad i Keyboard ponieważ chcę emulować prawdziwą klawiaturę usb, kod głównie z przykładów lekko przerobiłem. Jest 8 klawiszy zwykłych (cyfry 1-8) oraz 8 klawiszy funkcyjnych (enter, shift itp.) Szybki test w kilku grach i wszystko działa jak należy, teraz czeka mnie więcej testów i dołączyłem wyświetlacz by widzieć co się dzieje. Chcę by LCD pokazywał mi dla każdego klawisza funkcyjnego osobny tekst w drugiej lini, tak jak teraz pokazuje z tablicy Data[1] dla klawiszy od 1 do 8 lecz chciał bym teraz Switch i 16 przypadków dla każdego klawisza osobny tekst. Pomoże ktoś? Oto kod: Kod PHP: #include <Keyboard.h> Pozdrawiam. - RE: Arduino = gamepad/joystick? - Filip - 22-01-2017 Ok poradziłem sobie, jak zwykle ignorując podstawy programowania Pozostało mi tylko ostrzeżenie które nie do końca rozumiem, próbowałem zamiast KEY_ użyć hexadecymalnych i decymalnych wartości, bez skutku, pomimo 100% poprawnego działania układu, ostrzeżenie o zmianie z int na char zawsze się pokazuje. Kod PHP: MultiKey_to_Keyboard2.ino:26:1: warning: narrowing conversion of '133' from 'int' to 'char' inside { } [-Wnarrowing] Rozumiem że tu źle definiuje wartości klawiszy funkcyjnych: Kod PHP: char keys[ROWS][COLS] = { Mam dodać definicje na początku? To chyba nic nie daje, kompilator i tak za każdym razem zmienia i wywala ostrzeżenie. Proszę wytłumaczyć. Dzięki i pozdrawiam. RE: Arduino = gamepad/joystick? - mati12_14 - 23-01-2017 Jest rozwiązanie 1 pin = 1 przycisk w moim mniemaniu. Mjoy jeśli dobrze pamiętam wykorzystywał to rozwiązanie. Wystarczyło użyć tanich ekspanderów. Zresztą w wielu innych projektach również są używane ekspandery jeśli trzeba zwiększyć ilość pinów. Istnieje możliwość rozszerzenia pinów do bodajże dodatkowych 127 na takich modułach(trzeba tylko pamiętać o ustawieniu odpowiednich adresów dla ekspanderów). RE: Arduino = gamepad/joystick? - Filip - 03-02-2017 Witam, rozbudowuję projekt kontrolera jako że jestem z niego zadowolony, zamówiłem kilka pustych matryc na przyszłość a teraz chcę dodać kilka opcji. Mam problem ze zrozumieniem działania funkcji millis() Z wiadomych przyczyn nie mogę zastosować delay() by kontrolować czas. W kodzie mam Serial.print co 5 sekund i nawet nie potrafię tego do końca zrozumieć, dodałem opisy Kod PHP: loopCount++; // loop+1 Jeżeli dobrze rozumiem ten prosty kod to na jego podstawie nie powinienem mieć problemów z kontrolowaniem np. ledów nie powodując opóźnień w działaniu kontrolera. Poza ledami posłuży mi to do kontrolowania silniczków wibracyjnych i przekaźników, precyzja nie jest ważna, ważniejsze jest płynne działanie kontrolera i brak opóźnień. Dobrze rozumiem kod? Pozdrawiam. |