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łuArduino UNO
GNDGND
+5V5V
VRxA0
VRyA1
SWD2 (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.