Tutorial ESP32 26/55 - Isticmaalka Joystick-ka ee Arduino Qaadashada Tallaabada | Qalabka ESP32 IoT-ga ee SunFounder
Cashigarkani, waxaan ku baran doonaa sida loo isku xiro joystick-ka XY ee ESP32 microcontroller-ka ee SunFounder, si aan u ogaanno booskiisa oo aan tallaabo u qaadno iyadoo lagu salaynayo waxa uu soo geliyo. Sidoo kale, waxaan ku daraynaa buzzer ka shaqeeya marka joystick-ka loo dhaqaajiyo boos gaar ah. Isku darkani wuxuu noo suurtagelinayaa inaan abuurno mashaariic is-dhexgal ah oo ka jawaabaya gelinta isticmaalaha waqti-gaab ah.
Joystick-ka XY wuxuu bixiyaa laba wax-soo-saarka analog-ga ah oo u dhigma boosaska X iyo Y iyo furaha la riixi karo si uu u kiciyo tallaabo. Marka aan akhrino qiimaha joystick-ka, waxaan xakameyn karnaa walxo kala duwan oo ku jira mashruucena, sida kicinta buzzer-ka ama muujinta qiimaha shaashadda. Si aad si buuxda u fahanto habka, hubi inaad fiiriso fiidiyowga si aad u hesho aragti dheeri ah (fiidiyowga 00:00).
Qalabka La Sharxay
Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah ESP32 microcontroller-ka, joystick-ka XY, iyo buzzer-ka. ESP32 waa loox badan oo taageera Wi-Fi iyo Bluetooth, taasoo ka dhigaysa mid ku habboon mashaariicda IoT. Joystick-ka XY wuxuu ka kooban yahay laba resistors doorsooma oo loogu talagalay dhidibyada X iyo Y, iyo furaha riixitaanka ee gelinta dheeraadka ah.
Joystick-ku wuxuu soo saaraa calaamado analog ah oo u dhigma booskiisa, kuwaas oo lagu akhriyo pin-yada analog-ga ah ee ESP32. Furaha riixitaanku wuxuu bixiyaa calaamad dijitaal ah marka la riixo. Buzzer-ku wuxuu ku xiran yahay pin-ka wax-soo-saarka dijitaalka ah ee ESP32, taasoo u oggolaanaysa in la kiciyo ama la damiyo iyadoo lagu salaynayo booska joystick-ka.
Faahfaahinta Xogta
| Soo-saare | SunFounder |
|---|---|
| Nambarka qaybta | XY Joystick Module |
| Korantada Shaqada | 3.3 V – 5 V |
| Qiimaha Resistor-ka | 10 kΩ (dhidib kasta) |
| Korantada Ugu Badan | 20 mA |
| Nooca Furaha | Furaha riixitaanka ee ku-meel-gaarka ah |
| Cabbirrada | Qiyaastii 50 mm x 50 mm |
- Hubi in joystick-ka lagu shideeyo 3.3 V si uu ula jaanqaado ESP32.
- Isticmaal resistors-ka kor-u-jiidista ee furaha si looga fogaado gelinta sabeynaysa.
- Ku xir wax-soo-saarka analog-ga ah ee pin-yada ADC ee ESP32 (34 ee X, 35 ee Y).
- Isticmaal habka debounce ee furaha si looga hortago kicinta been abuurka ah.
- La soco heerarka korantada si loo hubiyo inay ku sii jiraan xadka badbaadada ee shaqada.
Tilmaamaha Xirista

Si aad joystick-ka ugu xirto ESP32, waxaad ku bilowdaa adiga oo ku xira pin-ka dhulka ee joystick-ka pin-ka dhulka ee ESP32. Marka xigta, ku xir pin-ka VCC ee joystick-ka pin-ka 3.3 V ee ESP32. Joystick-ku wuxuu leeyahay laba pin oo wax-soo-saarka analog-ga ah: ku xir wax-soo-saarka dhidibka X (lagu calaamadeeyay VRX) pin-ka 34 ee ESP32 iyo wax-soo-saarka dhidibka Y (lagu calaamadeeyay VRY) pin-ka 35.
Wax-soo-saarka furaha, ku xir pin-ka furaha pin-ka 33 ee ESP32. Pin-kani wuxuu akhrin doonaa riixitaanka furaha sida gelin dijitaal ah. Hubi in xirista ay adag tahay si looga fogaado dhibaatooyinka isdaba-joogga ah. Haddii xiristaadu ka duwan tahay fiidiyowga (fiidiyowga 02:30), la qabs iyadoo la raacayo mabaadi'da isku midka ah ee xirista analog-ga iyo dijitaalka.
Tusaalooyinka Koodhka & Sharaxaadda
Koodhka, waxaan ku bilaabaynaa qeexida constants-ka pin-yada joystick-ka. Aqoonsiyada xAxis, yAxis, iyo btn waxaa loo dejiyay 34, 35, iyo 33, siday u kala horreeyaan. Tani waxay ka dhigaysaa mid fudud in la tixraaco pin-yadan inta lagu jiro barnaamijka.
#define xAxis 34
#define yAxis 35
#define btn 33
Shaqada setup(), waxaan ku bilaabaynaa isgaarsiinta serial-ka waxaanan u dejinaynaa qaabka pin-ka furaha sida gelin. Tani waxay diyaarisa ESP32 inuu akhriyo xogta joystick-ka oo uu u diro kormeeraha serial-ka.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
Gudaha loop(), waxaan akhrinaynaa qiimaha analog-ga ah ee dhidibyada X iyo Y ee joystick-ka iyadoo la adeegsanayo analogRead() waxaanan ku kaydinaynaa xValue iyo yValue. Xaaladda furaha waxaa lagu akhriyaa iyadoo la adeegsanayo digitalRead() waxaana lagu kaydiyaa btnValue. Ugu dambeyntii, waxaan daabacaynaa qiimahan kormeeraha serial-ka.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Dib u dhigma inta u dhaxaysa akhrinta
}
Loop-kani wuxuu si joogto ah u cusboonaysiiyaa qiimaha, isagoo bixinaya jawaab-celin waqti-gaab ah oo ku saabsan dhaqdhaqaaqa joystick-ka iyo riixitaanka furaha. Koodhka dhammaystiran, fadlan tixraac koodhka buuxa ee hoos ku shuban maqaalka.
Muuujin / Waxa Laga Filan Karo
Marka qalabayntu dhammaystirto oo koodhka la soo geliyo, kormeeraha serial-ka waa inuu muujiyaa qiimaha X iyo Y oo ay weheliso xaaladda furaha. Markaad dhaqaajiso joystick-ka, qiimuhu wuu isbeddeli doonaa si waafaqsan, isagoo ka tarjumaya booskiisa. Riixitaanka furaha ayaa beddeli doonta xaaladdiisa u dhaxaysa sare iyo hoose.
Khaladaadka caadiga ah waxaa ka mid ah fiilada qaldan, taasoo keeni karta in inputs-ka sabeyn ama jawaab la'aan ka timaadda joystick-ka. Hubi in pins-ka saxda ah la isticmaalay oo resistors-ka kor u jiidaya (pull-up) lagu hirgeliyay switch-ka. Fiirso fiidiyowga si aad u aragto tusaalayaal wax ku ool ah oo ku saabsan dhaqamadan (fiidiyowga 13:00).
Waqtiyada Fiidiyowga
- 00:00 Bilow
- 1:47 Hordhac ku saabsan XY Joystick
- 7:32 Qiyaasida qiimaha Joystick-ka
- 8:40 Sharaxaadda fiilada
- 11:06 Koodhka Arduino ee Joystick-ka oo leh ESP32 oo la sharaxay
- 14:43 Doorashada board-ka ESP32 iyo COM port-ka ee Arduino IDE
- 16:24 Tusaale ku saabsan isticmaalka fudud ee Joystick-ka
- 19:20 Ogaanshaha booska koodhka joystick-ka oo leh buzzer
- 21:16 Tusaale ku saabsan ogaanshaha booska
// 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
Kheyraadka & Tixraacyada
-
DukumentiESP32 Tutorial 26/55- SunFounder doc page for joystickdocs.sunfounder.com
Faylasha📁
Fayl la'aan.