Arduino Leonardo / Micro (ATMega32u4) Jako gamepad / kontroler gier: 8 kroków

Arduino Leonardo / Micro (ATMega32u4) Jako gamepad / kontroler gier: 8 kroków

Spisu treści:

Anonim

Układ ATMega32u4 wykorzystywany w Arduino Leonardo, Micro lub Pro Micro ma możliwość używania niestandardowych deskryptorów HID USB. Dzięki tej zdolności możemy stworzyć nasz Arduino jako ogólny Gamepad!

Ta biblioteka zawiera wszystkie elementy do „symulowania” gamepada PS2 (więc dwa przyciski i 16 przycisków).

Kieszonkowe dzieci:

Krok 1: Instalacja biblioteki

Biblioteka potrzebuje Arduino IDE 1.6.6 lub nowszego do poprawnego działania.

Następnie musimy pobrać bibliotekę.

Wszystkie dane i dokumentacja są przechowywane w repozytorium GitHub:

github.com/GAMELASTER/ArduinoGamepad

Aby pobrać, kliknij przycisk „Pobierz ZIP” po prawej stronie.

Utwórz nowy katalog o nazwie „Gamepad” w bibliotekach (zazwyczaj znajduje się w Windows at) Documents> Arduino> i skopiuj wszystkie pliki z katalogu „ArduinoGamepad-master” do pobranego ZIP do tego katalogu.

Następnie uruchom Arduino IDE, a biblioteka pojawi się na liście bibliotek iw liście przykładów.

Krok 2: Połącz i uruchom testowy szkic

Po prostu otwórz przykładowy szkic jak na obrazku, skompiluj go i załaduj do swojego Arduino

Krok 3: Pozwala zweryfikować pracę biblioteki

Przejdź do Panelu sterowania> Urządzenia i drukarki i wyszukaj urządzenie (dla mnie to Arduino Leonardo)> Kliknij prawym przyciskiem myszy> Ustawienia urządzenia do gier> Właściwości> Test.

Jeśli przyciski są włączane / wyłączane krok po kroku, wszystko jest w porządku!

Krok 4: Podłączanie Thumbaxises i Buttons do Arduino

Do testowania prawdziwego połączenia między sprzętem, Arduino i komputerem potrzebujemy kilku przycisków lub thumbaxisów.

Dostałem dwa przyciski Thumbaxises + 2 (naciskając thumbaxises), połączyłem je z Pro Micro i puszczę szkic Arduino.

Podłączyłem lewy strzałek do:

  • X do A2
  • Y do A3
  • Z do 4

Podłączyłem prawy strzałek do

  • X do A0
  • Y do A1
  • Z do 3

Krok 5: Testowanie miniatur

tkkrlab.nl/wiki/Arduino_KY-023_XY-axis_joystick_module

Skompiluj, wdróż i otwórz Monitor Seryjny.

Postaraj się przesunąć za pomocą wskaźnika do minimum - maksimum, spróbuj kliknąć itd.

Pałeczki mogą być inne. Dla mnie ma wartości względne.

Minimalna wartość osi to 0, a maksimum to 1000. Logicznie centrum ma wartość 500.

W moim Thumbstick jest problem, centrum ma (prawie) inną wartość, więc kiedy będziemy robić integrację z biblioteką, musimy dokonać kalibracji, stabilizacji i ostatecznego formatowania wartości.

A Z (naciśnięcie) mam 0 po naciśnięciu i 1 po zwolnieniu (to nie jest prawda, jej odwrócenie, odwrócenie robi INPUT_PULLUP).

Krok 6: Integracja wartości z biblioteką

Naszkicować:

github.com/GAMELASTER/ArduinoGamepad/blob/master/examples/ThumbsticksTest/ThumbsticksTest.ino

W tym szkicu zintegrowałem moje pinezki, tak jak to było w poprzednim kroku.

Teraz to opiszę.

  1. Najpierw potrzebujemy biblioteki (linia 7)
  2. Następnie musimy zdefiniować wartości centrów dla wszystkich osi, ustawiłem wszystkie 500, ponieważ jest to domyślne centrum (linia 10 - 13)
  3. Definiujemy mnożnik do formatowania wartości. Ponieważ maksymalna wartość wynosi 127, otrzymujemy mnożnik, dzieląc 127 przez środek, a więc 500 (linia 14 - 17)
  4. Inicjowanie klasy Gamepad (linia 20)
  5. Inicjalizacja trybów Pin (linia 23 - 28)
  6. Rozpoczyna się kalibracja pinezek (linia 29)
    1. Definiujemy zmienne i inne (linia 72 - 73)
    2. A while … Ten czas służy do „weryfikacji osi pinezek”, jeśli jest w obszarze środkowym (linia 74)
    3. Czytamy wejście analogowe z osi (linia 76–79)
    4. Musimy sprawdzić, czy osie są w „obszarze centralnym”, wybrałem zakres 100 (linia 80–83)
    5. Jeśli wszystko jest w porządku, a powrót do 8 jest dobry, otrzymujemy prawdziwe centrum. (wiersz 84–89)
    6. Ustawiamy wartości osiowe na zmienne globalne i przeliczamy mnożniki dla wszystkich osi, więc realCenter dzieli się przez 127
  7. W pętli czytamy wejścia analogowe i niektóre przyciski (linia 33 - 37 i kilka innych linii)
  8. Teraz potrzebujemy formatu i ustabilizowania wartości.
    1. Więc najpierw musimy uzyskać wartość osi, gdzie 0 jest środkiem, więc Wartość Osi minus Środek Osi
    2. Następnie mamy ten mnożnik za każdym razem
    3. A dla stabilizacji kładziemy to (bez rundy)
  9. Ostatnią rzeczą jest „wysyłanie” zmiennych do biblioteki.

Liczby przycisków są opisane w górnej części obrazu.

Krok 7: Testowanie wyniku końcowego

Kompiluj, wdrażaj i pozwól sobie zagrać w jakąś grę!

Wybrałem Mirrors Edge, ale Mirrors Edge obsługuje tylko gamepad XBOX 360, można to po prostu rozwiązać, pobierając X360CE.

Krok 8: Więcej informacji, błędy itp.

Ta biblioteka jest częścią mojego projektu, w którym tworzę niestandardową konsolę Raspberry Pi Retro Console, która zostanie opublikowana tutaj w Instructables, kiedy to nastąpi, pisząc blogi na moim blogu, nie zapomnij tego obejrzeć!

Dokumentacja, błędy itp. Jest w GitHub:

github.com/GAMELASTER/ArduinoGamepad/

Lub powiedz mi to w komentarzach!