- Wymagane składniki
- Arduino Leonardo
- Moduł dwuosiowego joysticka XY
- Schemat obwodu
- Kod i objaśnienie robocze
Wcześniej połączyliśmy Joystick z Arduino UNO, aby zrozumieć, jak to działa, i sterowaliśmy czterema diodami LED po jego ruchu w lewo, w prawo, w górę iw dół. W tym projekcie użyjemy tego samego joysticka, co Gamepad lub kontroler do gier, aby grać w dowolne gry komputerowe, które wymagają ruchów w lewo, w prawo, w górę iw dół. Aby grać w gry wymagające większej liczby opcji sterowania, można użyć dwóch lub więcej joysticków. Tutaj użyjemy Arduino Leonardo do interfejsu Joysticka jako kontrolera gier. Arduino Leonardo ma przewagę nad Uno polegającą na tym, że możemy zainstalować na nim sterowniki USB, a po podłączeniu można go wykryć jako mysz, klawiaturę lub joystick.
Wymagane składniki
- Arduino Leonardo
- Moduł dwuosiowego joysticka XY
- Arduino IDE
- Przewody łączące
Arduino Leonardo
Do tego projektu używamy Arduino Leonardo, jest to płytka mikrokontrolera oparta na ATmega32u4. Posiada 20 cyfrowych pinów wejścia / wyjścia (z czego 7 można wykorzystać jako wyjścia PWM, a 12 jako wejścia analogowe), oscylator kwarcowy 16 MHz, złącze micro USB, gniazdo zasilania, nagłówek ICSP i przycisk resetowania. Zawiera wszystko, co potrzebne do obsługi mikrokontrolera; po prostu podłącz go do komputera za pomocą kabla USB lub zasil go za pomocą adaptera AC-DC lub baterii, aby rozpocząć.
Leonardo różni się od wszystkich poprzednich płyt tym, że ATmega32u4 ma wbudowaną komunikację USB, co eliminuje potrzebę stosowania dodatkowego procesora. Dzięki temu Leonardo może wyglądać na podłączonym komputerze jako mysz i klawiatura, jako dodatek do wirtualnego (CDC) portu szeregowego / COM.
Specyfikacja techniczna
Mikrokontroler | ATmega32u4 |
Napięcie robocze | 5V |
Napięcie wejściowe (zalecane) | 7-12V |
Napięcie wejściowe (limity) | 6-20V |
Cyfrowe piny we / wy | 20 |
Kanały PWM | 7 |
Kanały wejścia analogowego | 12 |
Prąd DC na pin I / O | 40 mA |
Prąd stały dla pinu 3,3 V. | 50 mA |
Pamięć flash | 32 KB (ATmega32u4), z czego 4 KB używane przez program ładujący |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Szybkośc zegara | 16 MHz |
Długość | 68,6 mm |
Szerokość | 53,3 mm |
Waga | 20 g |
Odniesienie do wyjścia PIN
Moduł dwuosiowego joysticka XY
Joysticki są dostępne w różnych kształtach i rozmiarach. Poniższy rysunek przedstawia typowy moduł joysticka. Ten moduł joysticka zwykle zapewnia wyjścia analogowe, a napięcia wyjściowe zapewniane przez ten moduł zmieniają się w zależności od kierunku, w którym go przesuwamy. Kierunek ruchu możemy uzyskać, interpretując te zmiany napięcia za pomocą mikrokontrolera. Wcześniej połączyliśmy joystick z różnymi mikrokontrolerami:
- Połączenie Joysticka z Arduino
- Joystick łączący z Raspberry Pi
- Połączenie joysticka z mikrokontrolerem PIC
- Połączenie joysticka z mikrokontrolerem AVR
Jak widać, ten moduł joysticka ma dwie osie. Są to oś X i oś Y. Każda oś JOY STICK jest przymocowana do potencjometru lub potencjometru. Punkty środkowe z tych pul są usuwane jako Rx i Ry. Zatem Rx i Ry są zmiennymi punktami w tych pulach. Gdy joystick jest w trybie gotowości, Rx i Ry działają jako dzielnik napięcia.
Poruszanie joystickiem wzdłuż osi poziomej powoduje zmianę napięcia na pinie Rx. Podobnie, gdy jest przesuwany wzdłuż osi pionowej, zmienia się napięcie na pinie Ry. Mamy więc cztery kierunki joysticka na dwóch wyjściach ADC. Kiedy drążek jest poruszany, napięcie na każdym pinie rośnie lub maleje w zależności od kierunku.
Schemat obwodu
Ten kontroler gier Arduino Joystick wymaga następujących połączeń między Arduino a joystickiem:
Kod i objaśnienie robocze
Kompletny kod z filmem demonstracyjnym jest podany na końcu; tutaj wyjaśniamy kilka ważnych jego części.
Najpierw musimy zainicjować bibliotekę klawiatury
#zawierać
Następnie w poniższym kodzie zainicjowaliśmy oś X i Y modułu Joystick odpowiednio dla analogowego pinu A0 i A1.
odpowiednio const int X_pin i const int Y_pin
Odczytywana jest wartość analogowa pinu VRX i jeśli wartość wynosi 1023, to wydawana jest komenda „góra”, a jeśli wartość wynosi 0, to komenda „dół”.
Podobnie odczytywana jest wartość analogowa pinu VRY i jeśli wartość wynosi 1023, to wydawana jest komenda „w prawo”, a jeśli wartość wynosi 0, to wydawana jest komenda „w lewo”.
Joystick ma również przycisk na górze, więc ten przycisk (SW) jest również odczytywany, a jeśli przycisk zostanie naciśnięty, wartość będzie wynosić 0, a następnie wydawane jest polecenie „enter”.
Na koniec wypal kod w Arduino i połącz Arduino z komputerem.
Następnie sprawdź „ Urządzenia i drukarki” w panelu sterowania, zobaczysz „ Arduino Leonardo” w sekcji urządzeń, jak pokazano na poniższym obrazku. Teraz możesz grać za pomocą joysticka.
Za pomocą tego joysticka możemy sterować dowolnymi elementami sterującymi w grze. Joystick ma wewnątrz dwa potencjometry, jeden do ruchu w osi X, a drugi do ruchu w osi Y. Każdy potencjometr pobiera 5v z Arduino. Więc gdy poruszamy joystickiem, wartość napięcia będzie się zmieniać, a wartość analogowa na pinach analogowych A0 i A1 również się zmieni. Joystick będzie więc działał jak gamepad.
W ten sposób zwykły joystick można przekształcić w kontroler gier za pomocą Arduino Leonardo i można go używać do grania w gry z wszystkimi elementami sterującymi do poruszania się w lewo, w prawo, w górę iw dół. Jak powiedziano Earliar, więcej niż jeden joystick może być połączony, aby uzyskać więcej elementów sterujących poza tymi czterema podstawowymi funkcjami.