Katika mafunzo haya, tutajifunza jinsi ya kuunganisha kijiti cha XY (joystick) na microcontroller ya ESP32 kutoka SunFounder, kutuwezesha kugundua nafasi yake na kuchukua hatua kulingana na pembejeo yake. Pia tutaunganisha buzzer inayowasha wakati kijiti kinaposogezwa hadi nafasi maalum. Mchanganyiko huu utatuwezesha kuunda miradi shirikishi inayoitikia pembejeo za mtumiaji kwa wakati halisi.
ESP32-26-xy-joystick-main
Kijiti cha XY hutoa matokeo mawili ya analogi yanayolingana na nafasi za X na Y na swichi inayoweza kubonyezwa ili kuanzisha kitendo. Kwa kusoma thamani kutoka kwenye kijiti, tunaweza kudhibiti vipengele mbalimbali katika mradi wetu, kama vile kuwasha buzzer au kuonyesha thamani kwenye skrini. Ili kuelewa mchakato huo kikamilifu, hakikisha umeangalia video kwa maarifa zaidi (katika video saa 00:00).
Vifaa Vimeelezwa
Vipengele vikuu vya mradi huu ni pamoja na microcontroller ya ESP32, kijiti cha XY, na buzzer. ESP32 ni bodi yenye matumizi mengi inayotumia Wi-Fi na Bluetooth, na kuifanya kuwa bora kwa miradi ya IoT. Kijiti cha XY kina resistors mbili zinazobadilika kwa shoka za X na Y, na swichi ya kitufe cha kushinikiza kwa pembejeo ya ziada.
joystick_schematicESP32-26-xy-joystick-schematic
Kijiti hutoa ishara za analogi zinazolingana na nafasi yake, ambazo husomwa na pini za analogi za ESP32. Kitufe cha kushinikiza hutoa ishara ya dijiti kinapobonyezwa. Buzzer imeunganishwa kwenye pini ya pato la dijiti kwenye ESP32, ikiruhusu kuwashwa au kuzimwa kulingana na nafasi ya kijiti.
Maelezo ya Datasheet
Mtengenezaji
SunFounder
Nambari ya sehemu
Moduli ya Kijiti cha XY
Voltage ya Uendeshaji
3.3 V – 5 V
Thamani ya Resistor
10 kΩ (kila mhimili)
Upeo wa Mkondo
20 mA
Aina ya Swichi
Kitufe cha muda cha kushinikiza
Vipimo
Takriban 50 mm x 50 mm
Hakikisha kijiti kinatumia nguvu ya 3.3 V kwa upatanifu na ESP32.
Tumia resistors za kuvuta-juu kwa swichi ili kuepuka pembejeo zinazoelea.
Unganisha matokeo ya analogi kwenye pini za ADC za ESP32 (34 kwa X, 35 kwa Y).
Tumia utaratibu wa kuzuia mivurugiko (debounce) kwa swichi ili kuzuia kuwasha kwa uwongo.
Fuatilia viwango vya voltage ili kuhakikisha vinabaki ndani ya mipaka salama ya uendeshaji.
Maagizo ya Uunganishaji wa Waya
ESP32-26-xy-joystick-wiring
Ili kuunganisha kijiti kwenye ESP32, anza kwa kuunganisha pini ya ardhi (ground) kutoka kwenye kijiti hadi pini ya ardhi kwenye ESP32. Kisha, unganisha pini ya VCC ya kijiti kwenye pini ya 3.3 V kwenye ESP32. Kijiti kina pini mbili za pato la analogi: unganisha pato la mhimili wa X (linaloitwa VRX) kwenye pini 34 kwenye ESP32 na pato la mhimili wa Y (linaloitwa VRY) kwenye pini 35.
Kwa pato la swichi, unganisha pini ya swichi kwenye pini 33 kwenye ESP32. Pini hii itasoma ubonyezo wa kitufe kama pembejeo ya dijiti. Hakikisha miunganisho ni thabiti ili kuepuka matatizo ya mara kwa mara. Ikiwa uunganishaji wako wa waya unatofautiana na video (katika video saa 02:30), badilisha ipasavyo huku ukifuata kanuni zile zile za miunganisho ya analogi na dijiti.
Mifano ya Msimbo na Maelezo
Katika msimbo, tunaanza kwa kufafanua viunga vya pini za kijiti. Vitambulisho xAxis, yAxis, na btn vimewekwa kuwa 34, 35, na 33, mtawalia. Hii inafanya iwe rahisi kurejelea pini hizi katika programu nzima.
#define xAxis 34
#define yAxis 35
#define btn 33
Katika kazi ya setup(), tunaanzisha mawasiliano ya serial na kuweka hali ya pini ya kitufe kuwa pembejeo. Hii inatayarisha ESP32 kusoma data kutoka kwenye kijiti na kuituma kwenye kifuatiliaji cha serial.
Ndani ya loop(), tunasoma thamani za analogi za shoka za X na Y za kijiti kwa kutumia analogRead() na kuzihifadhi katika xValue na yValue. Hali ya kitufe inasomwa kwa kutumia digitalRead() na kuhifadhiwa katika btnValue. Hatimaye, tunachapisha thamani hizi kwenye kifuatiliaji cha serial.
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); // Kuchelewesha kati ya usomaji
}
Kitanzi hiki kinasasisha thamani kila mara, kikitoa maoni ya wakati halisi kuhusu harakati za kijiti na ubonyezo wa kitufe. Kwa msimbo kamili, tafadhali rejelea msimbo kamili uliopakiwa chini ya makala.
Maonyesho / Nini cha Kutarajia
Wakati usanidi ukikamilika na msimbo kupakiwa, kifuatiliaji cha serial kinapaswa kuonyesha thamani za X na Y pamoja na hali ya kitufe. Unaposogeza kijiti, thamani zitabadilika ipasavyo, zikionyesha nafasi yake. Kubonyeza kitufe kutabadilisha hali yake kati ya juu na chini.
Makosa ya kawaida ni pamoja na wiring isiyo sahihi, ambayo inaweza kusababisha pembejeo zinazoelea au kutokujibu kwa joystick. Hakikisha kwamba pini sahihi zinatumika na kwamba resistors za pull-up zinatekelezwa kwa swichi. Tazama video kwa maonyesho ya vitendo ya tabia hizi (katika video saa 13:00).
Vidokezo vya Muda wa Video
00:00 Anza
1:47 Utangulizi wa XY Joystick
7:32 Kupima thamani za Joystick
8:40 Wiring imeelezewa
11:06 Msimbo wa Arduino kwa Joystick na ESP32 umeelezewa
14:43 Kuchagua bodi ya ESP32 na bandari ya COM katika Arduino IDE
16:24 Maonyesho ya matumizi rahisi ya Joystick
19:20 Kutambua nafasi ya msimbo wa joystick na buzzer
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
Språk: C++
// 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
}
Upplysning: Som en Amazon Associate tjänar vi på kvalificerade köp. Det betyder att vi kan få en liten provision om du klickar på en länk och gör ett köp utan extra kostnad för dig.