Samouczek ESP32 26/55 - Używanie joysticka z Arduino w działaniu | Zestaw IoT SunFounder ESP32
W tym samouczku nauczymy się, jak podłączyć joystick XY do mikrokontrolera ESP32 firmy SunFounder, co pozwoli nam wykrywać jego położenie i reagować na jego sygnały. Zintegrujemy również brzęczyk, który aktywuje się, gdy joystick zostanie przesunięty do określonej pozycji. To połączenie umożliwi nam tworzenie interaktywnych projektów, które reagują na dane wejściowe użytkownika w czasie rzeczywistym.
Joystick XY zapewnia dwa wyjścia analogowe odpowiadające pozycjom X i Y oraz przycisk, który można nacisnąć, aby wyzwolić akcję. Odczytując wartości z joysticka, możemy sterować różnymi elementami naszego projektu, takimi jak aktywacja brzęczyka czy wyświetlanie wartości na ekranie. Aby w pełni zrozumieć proces, koniecznie obejrzyj wideo, aby uzyskać dodatkowe informacje (na wideo o 00:00).
Objaśnienie sprzętu
Główne komponenty tego projektu to mikrokontroler ESP32, joystick XY oraz brzęczyk. ESP32 to wszechstronna płyta obsługująca Wi-Fi i Bluetooth, co czyni ją idealną do projektów IoT. Joystick XY składa się z dwóch potencjometrów dla osi X i Y oraz przycisku chwilowego do dodatkowych danych wejściowych.
Joystick generuje sygnały analogowe odpowiadające jego położeniu, które są odczytywane przez piny analogowe ESP32. Przycisk zapewnia sygnał cyfrowy po naciśnięciu. Brzęczyk jest podłączony do cyfrowego pinu wyjściowego na ESP32, co pozwala na jego aktywację lub dezaktywację w zależności od położenia joysticka.
Szczegóły z karty katalogowej
| Producent | SunFounder |
|---|---|
| Numer części | Moduł joysticka XY |
| Napięcie robocze | 3,3 V – 5 V |
| Wartość rezystora | 10 kΩ (dla każdej osi) |
| Maksymalny prąd | 20 mA |
| Typ przełącznika | Przycisk chwilowy |
| Wymiary | Ok. 50 mm x 50 mm |
- Upewnij się, że joystick jest zasilany napięciem 3,3 V dla kompatybilności z ESP32.
- Użyj rezystorów podciągających dla przełącznika, aby uniknąć pływających wejść.
- Podłącz wyjścia analogowe do pinów ADC ESP32 (34 dla X, 35 dla Y).
- Zastosuj mechanizm eliminacji drgań styków dla przełącznika, aby zapobiec fałszywemu wyzwalaniu.
- Monitoruj poziomy napięcia, aby upewnić się, że pozostają w bezpiecznych granicach roboczych.
Instrukcje podłączenia

Aby podłączyć joystick do ESP32, zacznij od połączenia pinu masy joysticka z pinem masy na ESP32. Następnie podłącz pin VCC joysticka do pinu 3,3 V na ESP32. Joystick ma dwa piny wyjścia analogowego: podłącz wyjście osi X (oznaczone jako VRX) do pinu 34 na ESP32, a wyjście osi Y (oznaczone jako VRY) do pinu 35.
Dla wyjścia przełącznika podłącz pin przełącznika do pinu 33 na ESP32. Ten pin będzie odczytywał naciśnięcie przycisku jako wejście cyfrowe. Upewnij się, że połączenia są pewne, aby uniknąć sporadycznych problemów. Jeśli Twoje okablowanie różni się od wideo (na wideo o 02:30), dostosuj je odpowiednio, przestrzegając tych samych zasad dla połączeń analogowych i cyfrowych.
Przykłady kodu i omówienie
W kodzie zaczynamy od zdefiniowania stałych dla pinów joysticka. Identyfikatory xAxis, yAxis i btn są ustawione odpowiednio na 34, 35 i 33. Ułatwia to odwoływanie się do tych pinów w całym programie.
#define xAxis 34
#define yAxis 35
#define btn 33
W funkcji setup() inicjalizujemy komunikację szeregową i ustawiamy tryb pinu przycisku na wejście. To przygotowuje ESP32 do odczytu danych z joysticka i wysyłania ich do monitora szeregowego.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
Wewnątrz loop() odczytujemy wartości analogowe dla osi X i Y joysticka za pomocą analogRead() i przechowujemy je w xValue i yValue. Stan przycisku jest odczytywany za pomocą digitalRead() i przechowywany w btnValue. Na koniec wypisujemy te wartości na monitorze szeregowym.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Wartość joysticka to %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Opóźnienie między odczytami
}
Ta pętla ciągle aktualizuje wartości, zapewniając informacje w czasie rzeczywistym o ruchu joysticka i naciśnięciach przycisku. Pełny kod znajduje się poniżej artykułu.
Demonstracja / Czego się spodziewać
Po zakończeniu konfiguracji i wgraniu kodu monitor szeregowy powinien wyświetlać wartości X i Y wraz ze stanem przycisku. Podczas przesuwania joysticka wartości będą się odpowiednio zmieniać, odzwierciedlając jego położenie. Naciśnięcie przycisku przełączy jego stan między wysokim i niskim.
Typowe pułapki obejmują nieprawidłowe podłączenie, które może prowadzić do pływających wejść lub braku reakcji joysticka. Upewnij się, że użyte są właściwe piny oraz że rezystory podciągające są zaimplementowane dla przełącznika. Obejrzyj wideo, aby zobaczyć praktyczne demonstracje tych zachowań (na wideo o 13:00).
Znaczniki czasowe wideo
- 00:00 Start
- 1:47 Wprowadzenie do joysticka XY
- 7:32 Pomiar wartości joysticka
- 8:40 Wyjaśnienie podłączenia
- 11:06 Wyjaśnienie kodu Arduino dla joysticka z ESP32
- 14:43 Wybór płyty ESP32 i portu COM w Arduino IDE
- 16:24 Demonstracja prostego użycia joysticka
- 19:20 Wykrywanie pozycji joysticka – kod z buzzerem
- 21:16 Demonstracja wykrywania pozycji
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33
void setup() {
// Initialize serial communication at 115200 bits per second:
Serial.begin(115200);
// Set the mode of the button pin to input
pinMode(btn, INPUT);
}
void loop() {
// Read the analog value for x,y axis
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
// Read the digital value from the button pin
int btnValue = digitalRead(btn);
// print out the values
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Delay between reads
}
Common Course Links
Common Course Files
Zasoby i odniesienia
-
DokumentacjaESP32 Tutorial 26/55 - SunFounder doc page for joystickdocs.sunfounder.com
Pliki📁
Brak dostępnych plików.