Joystick analogowy (ang. analog joystick) to jeden z najpopularniejszych modułów wejściowych w projektach z Arduino, Raspberry Pi czy ESP32. Pozwala odczytywać położenie drążka w dwóch osiach (X i Y) oraz stan dodatkowego przycisku, dzięki czemu nadaje się do sterowania robotami, gimbalami kamer, menu na wyświetlaczu czy prostymi grami. W tym przewodniku omawiamy budowę modułu, zasadę działania, opis wyprowadzeń, sposób podłączenia do Arduino oraz praktyczne wskazówki montażowe.
Czym jest joystick analogowy?
Typowy moduł joysticka analogowego (oznaczany często jako KY-023) to drążek osadzony w mechanizmie kardana (gimbal) sprzężony z dwoma potencjometrami obrotowymi o wartości zwykle 10 kΩ. Każdy potencjometr odpowiada za jedną oś. Dodatkowo pod drążkiem znajduje się chwilowy przełącznik (tact switch) uruchamiany przez naciśnięcie drążka w dół.
W przeciwieństwie do enkodera czy przycisków kierunkowych, joystick analogowy zwraca ciągłą wartość napięcia proporcjonalną do wychylenia. Po podłączeniu do przetwornika ADC mikrokontrolera (np. 10-bitowego w Arduino UNO) otrzymujemy odczyt z zakresu 0–1023, gdzie wartość środkowa (ok. 512) odpowiada położeniu spoczynkowemu.
Opis wyprowadzeń (pinów)
Standardowy moduł ma pięć wyprowadzeń:
- GND – masa modułu.
- +5V (VCC) – zasilanie modułu, zwykle 5 V (działa też przy 3,3 V z proporcjonalnie mniejszym zakresem napięcia).
- VRx – wyjście analogowe osi X. Napięcie zmienia się od 0 V do VCC zależnie od wychylenia drążka w poziomie.
- VRy – wyjście analogowe osi Y. Napięcie zmienia się od 0 V do VCC zależnie od wychylenia w pionie.
- SW – wyjście przycisku. Przez rezystor podciągający (pull-up) pozostaje w stanie wysokim, a po wciśnięciu drążka zwiera się do masy (stan niski).
W spoczynku oba wyjścia VRx i VRy podają mniej więcej połowę napięcia zasilania (przy 5 V około 2,5 V). To dlatego surowy odczyt środkowy rzadko wynosi dokładnie 512 — w kodzie warto wprowadzić tzw. martwą strefę (dead zone), aby drobne odchyłki nie były interpretowane jako ruch.
Zasada działania – mechanizm kardana i potencjometry
Drążek osadzony jest w dwóch prostopadłych ramkach (kardan), z których każda obraca wałek jednego potencjometru. Wychylenie drążka w osi X obraca pierwszy potencjometr, a w osi Y — drugi. Potencjometr działa jak dzielnik napięcia: jego suwak podaje napięcie wynikające z położenia, które mikrokontroler mierzy przetwornikiem ADC.
Sprężyny powrotne automatycznie centrują drążek po zwolnieniu. Wciśnięcie drążka w dół domyka osobny mikroprzełącznik — jest to wejście cyfrowe, niezależne od osi analogowych.
Podłączenie joysticka do Arduino
Potrzebne elementy: moduł joysticka, płytka Arduino UNO, przewody połączeniowe oraz opcjonalnie diody LED z rezystorami (np. 5 diod i rezystory 220 Ω) do wizualizacji ruchu. Połączenia:
| Pin modułu | Arduino UNO |
|---|---|
| GND | GND |
| +5V | 5V |
| VRx | A0 |
| VRy | A1 |
| SW | D2 (z pull-up) |
W kodzie osie odczytujemy funkcją analogRead(A0) i analogRead(A1), a przycisk — digitalRead(2) po włączeniu pinMode(2, INPUT_PULLUP). Aby zamienić surowy odczyt 0–1023 na zakres np. −100…100, użyj funkcji map() i odejmij wartość środkową.
Przykładowy szkic Arduino
Najprostszy program odczytuje obie osie i przycisk, a wyniki wysyła do monitora portu szeregowego. Logika sprowadza się do trzech kroków: odczyt wartości analogowych dla osi X i Y, odczyt stanu cyfrowego przycisku oraz wypisanie danych. W pętli głównej wywołujemy analogRead() dla pinów A0 i A1, a następnie odejmujemy zapisaną wcześniej wartość spoczynkową, aby uzyskać znak i wielkość wychylenia. Stan przycisku odczytujemy funkcją digitalRead() — przy konfiguracji z rezystorem podciągającym wciśnięcie daje stan niski (LOW). Aby uniknąć drgań styków, dodajemy krótkie opóźnienie lub programowe odkłócanie. Tak przygotowane wartości można dalej mapować na sterowanie silnikami, kursorem w menu lub kątem serwomechanizmu.
Zastosowania
- sterowanie robotami i pojazdami (różnicowe sterowanie silnikami),
- obsługa menu i interfejsów na wyświetlaczach OLED/TFT,
- sterowanie gimbalem kamery lub serwomechanizmami,
- kontrolery do prostych gier i emulatorów,
- panele HMI w prototypach urządzeń.
Najczęstsze problemy i rozwiązywanie
- Dryft drążka (samoczynny ruch w spoczynku) – zwykle efekt braku martwej strefy lub zużytych potencjometrów; dodaj kalibrację i programowe okno tolerancji.
- Odwrócona oś – jeśli kierunek jest przeciwny do oczekiwanego, zamień znak w kodzie lub odwróć przypisanie wyjścia (zamiana VRx z VRy lub zamiana skrajnych zacisków potencjometru).
- Skoki odczytu (szum) – uśredniaj kilka próbek ADC i dodaj kondensator filtrujący przy zasilaniu.
- Przycisk reaguje wielokrotnie – zastosuj odkłócanie (debounce) i wykrywanie zbocza zamiast poziomu.
- Brak reakcji jednej osi – sprawdź lutowanie wyprowadzenia VRx/VRy oraz ciągłość połączenia do pinu ADC.
Wskazówki projektowe i montażowe
- Kalibracja i martwa strefa – odczytaj wartość spoczynkową przy starcie i ignoruj odchyłki ±20–30 jednostek, aby uniknąć dryftu.
- Stabilne zasilanie – wahania VCC przekładają się wprost na odczyt ADC; warto dodać kondensator filtrujący przy module.
- Filtrowanie przycisku – mechaniczny styk wymaga programowego odkłócania (debounce ~20 ms).
- Montaż na PCB – w wersji produkcyjnej joystick lutuje się przewlekanie (THT); zadbaj o solidne przylutowanie nóżek mechanicznych, które przenoszą naprężenia drążka.
Jeśli budujesz kontroler lub panel sterujący jako gotowy produkt, warto zaprojektować dla niego dedykowaną płytkę drukowaną zamiast łączyć moduły przewodami — poprawia to niezawodność i estetykę. Montaż PCB z tego typu elementami mechanicznymi (THT) realizujemy seryjnie z kontrolą jakości.
FAQ
Czy joystick analogowy działa przy 3,3 V? Tak, ale zakres napięcia wyjściowego skaluje się do 3,3 V — pamiętaj o tym przy interpretacji odczytów ADC.
Dlaczego odczyt środkowy nie wynosi dokładnie 512? To naturalna tolerancja potencjometrów i mechaniki. Dlatego stosuje się kalibrację i martwą strefę.
Podsumowanie
Joystick analogowy to tani i wszechstronny moduł wejściowy: dwa potencjometry dla osi X/Y oraz przycisk dają pełną kontrolę 2D w projektach mikrokontrolerowych. Klucz do dobrego działania to stabilne zasilanie, kalibracja i poprawny montaż.
Projektujesz urządzenie oparte na joysticku analogowym? Zleć montaż PCB w OurPCB — wycena w 12 godzin roboczych.