Návod na ESP32 26/55 - Použitie joysticku s Arduinom: Akcia | SunFounder's ESP32 IoT kit
V tomto návode sa naučíme, ako pripojiť XY joystick k mikrokontroléru ESP32 od spoločnosti SunFounder, aby sme mohli zisťovať jeho polohu a reagovať na jeho vstup. Integrujeme tiež bzučiak, ktorý sa aktivuje, keď sa joystick posunie do konkrétnej polohy. Táto kombinácia nám umožní vytvárať interaktívne projekty, ktoré reagujú na vstup používateľa v reálnom čase.
XY joystick poskytuje dva analógové výstupy zodpovedajúce polohám X a Y a spínač, ktorý možno stlačiť na spustenie akcie. Čítaním hodnôt z joysticku môžeme ovládať rôzne prvky v našom projekte, ako je aktivácia bzučiaka alebo zobrazenie hodnôt na obrazovke. Aby ste plne pochopili proces, určite si pozrite video pre ďalšie informácie (vo videu o 00:00).
Vysvetlenie hardvéru
Hlavné komponenty pre tento projekt zahŕňajú mikrokontrolér ESP32, XY joystick a bzučiak. ESP32 je všestranná doska, ktorá podporuje Wi-Fi a Bluetooth, čo ju robí ideálnou pre IoT projekty. XY joystick pozostáva z dvoch premenných rezistorov pre osi X a Y a tlačidlového spínača pre dodatočný vstup.
Joystick vydáva analógové signály zodpovedajúce jeho polohe, ktoré sú čítané analógovými pinmi ESP32. Tlačidlo poskytuje digitálny signál po stlačení. Bzučiak je pripojený k digitálnemu výstupnému pinu na ESP32, čo umožňuje jeho aktiváciu alebo deaktiváciu na základe polohy joysticku.
Podrobnosti z datasheetu
| Výrobca | SunFounder |
|---|---|
| Označenie dielu | XY Joystick Module |
| Prevádzkové napätie | 3,3 V – 5 V |
| Hodnota rezistora | 10 kΩ (každá os) |
| Maximálny prúd | 20 mA |
| Typ spínača | Okamžité tlačidlo |
| Rozmery | Približne 50 mm x 50 mm |
- Uistite sa, že joystick je napájaný napätím 3,3 V pre kompatibilitu s ESP32.
- Použite pull-up rezistory pre spínač, aby ste predišli plávajúcim vstupom.
- Pripojte analógové výstupy k ADC pinom ESP32 (34 pre X, 35 pre Y).
- Použite mechanizmus debouncingu pre spínač, aby ste predišli falošnému spúšťaniu.
- Sledujte úrovne napätia, aby ste zaistili, že zostanú v rámci bezpečných prevádzkových limitov.
Pokyny na zapojenie

Na zapojenie joysticku k ESP32 začnite pripojením uzemňovacieho pinu z joysticku k uzemňovaciemu pinu na ESP32. Ďalej pripojte pin VCC joysticku k pinu 3,3 V na ESP32. Joystick má dva analógové výstupné piny: pripojte výstup osi X (označený ako VRX) k pinu 34 na ESP32 a výstup osi Y (označený ako VRY) k pinu 35.
Pre výstup spínača pripojte pin spínača k pinu 33 na ESP32. Tento pin bude čítať stlačenie tlačidla ako digitálny vstup. Uistite sa, že spojenia sú bezpečné, aby ste predišli prerušovaným problémom. Ak sa vaše zapojenie líši od videa (vo videu o 02:30), prispôsobte sa podľa toho pri dodržaní rovnakých princípov pre analógové a digitálne pripojenia.
Príklady kódu a vysvetlenie
V kóde začneme definovaním konštánt pre piny joysticku. Identifikátory xAxis, yAxis a btn sú nastavené na 34, 35 a 33. To uľahčuje odkazovanie na tieto piny v celom programe.
#define xAxis 34
#define yAxis 35
#define btn 33
Vo funkcii setup() inicializujeme sériovú komunikáciu a nastavíme pin tlačidla ako vstup. To pripraví ESP32 na čítanie údajov z joysticku a ich odosielanie do sériového monitora.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
Vo vnútri loop() čítame analógové hodnoty pre osi X a Y joysticku pomocou analogRead() a ukladáme ich do xValue a yValue. Stav tlačidla sa číta pomocou digitalRead() a ukladá sa do btnValue. Nakoniec tieto hodnoty vytlačíme do sériového monitora.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Hodnota joysticku je %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Oneskorenie medzi čítaniami
}
Táto slučka nepretržite aktualizuje hodnoty a poskytuje spätnú väzbu v reálnom čase o pohybe joysticku a stlačení tlačidla. Pre úplný kód si pozrite celý kód načítaný nižšie v článku.
Demonštrácia / Čo očakávať
Keď je nastavenie dokončené a kód je nahraný, sériový monitor by mal zobrazovať hodnoty X a Y spolu so stavom tlačidla. Keď pohybujete joystickom, hodnoty sa budú zodpovedajúcim spôsobom meniť, čo odráža jeho polohu. Stlačenie tlačidla prepne jeho stav medzi vysokou a nízkou úrovňou.
Medzi časté chyby patrí nesprávne zapojenie, ktoré môže viesť k plávajúcim vstupom alebo žiadnej odozve joysticku. Uistite sa, že sú použité správne piny a že sú pre spínač implementované pull-up rezistory. Pozrite si video s praktickými ukážkami týchto správaní (vo videu o 13:00).
Časové značky videa
- 00:00 Začiatok
- 1:47 Úvod do XY joysticku
- 7:32 Meranie hodnôt joysticku
- 8:40 Vysvetlenie zapojenia
- 11:06 Vysvetlenie kódu Arduina pre joystick s ESP32
- 14:43 Výber dosky ESP32 a COM portu v Arduino IDE
- 16:24 Ukážka jednoduchého použitia joysticku
- 19:20 Detekcia polohy joysticku pomocou kódu s bzučiakom
- 21:16 Ukážka detekcie polohy
// 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
Resources & references
-
DocumentationESP32 Tutorial 26/55- SunFounder doc page for joystickdocs.sunfounder.com
Files📁
No files available.