Tutorial ESP32 26/55 - Utilizarea joystick-ului cu Arduino în acțiune | Kitul IoT ESP32 de la SunFounder
În acest tutorial, vom învăța cum să interfajăm un joystick XY cu microcontrolerul ESP32 de la SunFounder, permițându-ne să detectăm poziția acestuia și să acționăm pe baza intrării sale. De asemenea, vom integra un buzzer care se activează atunci când joystick-ul este mutat într-o poziție specifică. Această combinație ne va permite să creăm proiecte interactive care răspund la intrarea utilizatorului în timp real.
Joystick-ul XY oferă două ieșiri analogice corespunzătoare pozițiilor X și Y și un comutator care poate fi apăsat pentru a declanșa o acțiune. Prin citirea valorilor de la joystick, putem controla diverse elemente din proiectul nostru, cum ar fi activarea unui buzzer sau afișarea valorilor pe ecran. Pentru a înțelege pe deplin procesul, asigurați-vă că verificați videoclipul pentru informații suplimentare (în videoclip la 00:00).
Hardware Explicat
Componentele principale pentru acest proiect includ microcontrolerul ESP32, joystick-ul XY și un buzzer. ESP32 este o placă versatilă care suportă Wi-Fi și Bluetooth, fiind ideală pentru proiecte IoT. Joystick-ul XY constă din două rezistențe variabile pentru axele X și Y și un comutator cu buton pentru intrare suplimentară.
Joystick-ul scoate semnale analogice corespunzătoare poziției sale, care sunt citite de pinii analogici ai ESP32. Butonul oferă un semnal digital atunci când este apăsat. Buzzer-ul este conectat la un pin de ieșire digital pe ESP32, permițând activarea sau dezactivarea acestuia pe baza poziției joystick-ului.
Detalii din Fișa Tehnică
| Producător | SunFounder |
|---|---|
| Număr de piesă | Modul Joystick XY |
| Tensiune de Operare | 3,3 V – 5 V |
| Valoarea Rezistenței | 10 kΩ (fiecare axă) |
| Curent Maxim | 20 mA |
| Tip Comutator | Buton momentan |
| Dimensiuni | Aprox. 50 mm x 50 mm |
- Asigurați-vă că joystick-ul este alimentat cu 3,3 V pentru compatibilitate cu ESP32.
- Utilizați rezistențe de pull-up pentru comutator pentru a evita intrările flotante.
- Conectați ieșirile analogice la pinii ADC ai ESP32 (34 pentru X, 35 pentru Y).
- Utilizați un mecanism de debounce pentru comutator pentru a preveni declanșările false.
- Monitorizați nivelurile de tensiune pentru a vă asigura că rămân în limitele de operare sigure.
Instrucțiuni de Cablare

Pentru a cabla joystick-ul la ESP32, începeți prin conectarea pinului de masă de la joystick la un pin de masă de pe ESP32. Apoi, conectați pinul VCC al joystick-ului la pinul de 3,3 V de pe ESP32. Joystick-ul are două pinuri de ieșire analogice: conectați ieșirea axei X (etichetată ca VRX) la pinul 34 de pe ESP32 și ieșirea axei Y (etichetată ca VRY) la pinul 35.
Pentru ieșirea comutatorului, conectați pinul comutatorului la pinul 33 de pe ESP32. Acest pin va citi apăsarea butonului ca intrare digitală. Asigurați-vă că conexiunile sunt sigure pentru a evita probleme intermitente. Dacă cablarea dvs. diferă de videoclip (în videoclip la 02:30), adaptați-vă în consecință urmând aceleași principii pentru conexiunile analogice și digitale.
Exemple de Cod & Explicații
În cod, începem prin definirea constantelor pentru pinii joystick-ului. Identificatorii xAxis, yAxis și btn sunt setați la 34, 35 și, respectiv, 33. Acest lucru facilitează referirea la acești pini pe tot parcursul programului.
#define xAxis 34
#define yAxis 35
#define btn 33
În funcția setup(), inițializăm comunicarea serială și setăm modul pinului butonului la intrare. Aceasta pregătește ESP32 să citească date de la joystick și să le trimită la monitorul serial.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
În interiorul loop(), citim valorile analogice pentru axele X și Y ale joystick-ului folosind analogRead() și le stocăm în xValue și yValue. Starea butonului este citită folosind digitalRead() și stocată în btnValue. În final, imprimăm aceste valori la monitorul serial.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Valoarea joystick-ului este %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Întârziere între citiri
}
Această buclă actualizează continuu valorile, oferind feedback în timp real privind mișcarea joystick-ului și apăsările butonului. Pentru codul complet, vă rugăm să consultați codul complet încărcat mai jos în articol.
Demonstrație / Ce să Vă Așteptați
Când configurarea este completă și codul este încărcat, monitorul serial ar trebui să afișeze valorile X și Y împreună cu starea butonului. Pe măsură ce mutați joystick-ul, valorile se vor schimba în consecință, reflectând poziția acestuia. Apăsarea butonului va comuta starea acestuia între ridicat și coborât.
Capcanele frecvente includ cablarea incorectă, care poate duce la intrări flotante sau la lipsa răspunsului din partea joystick-ului. Asigurați-vă că sunt utilizați pinii corecți și că rezistențele de pull-up sunt implementate pentru comutator. Urmăriți videoclipul pentru demonstrații practice ale acestor comportamente (în videoclip la 13:00).
Marcaje temporale din videoclip
- 00:00 Început
- 1:47 Introducere în joystick-ul XY
- 7:32 Măsurarea valorilor joystick-ului
- 8:40 Cablarea explicată
- 11:06 Codul Arduino pentru joystick cu ESP32 explicat
- 14:43 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 16:24 Demonstrația utilizării simple a joystick-ului
- 19:20 Detectarea poziției joystick-ului cu cod și buzzer
- 21:16 Demonstrația detectării poziției
// 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
Resurse și referințe
-
DocumentațieESP32 Tutorial 26/55- SunFounder doc page for joystickdocs.sunfounder.com
Fișiere📁
Nu sunt disponibile fișiere.