Katika mafunzo haya, tutachunguza jinsi ya kutumia arrays katika programu ya ESP32 Arduino. Arrays hukuruhusu kuhifadhi thamani nyingi katika kigezo kimoja, na kurahisisha usimamizi wa data, hasa unaposhughulika na makusanyo ya vitu vinavyofanana. Mafunzo haya yatakuongoza katika kufafanua, kufikia, na kubadilisha arrays, pamoja na kutumia loops kuingiliana nazo kwa ufanisi. Kuelewa dhana hizi kutaimarisha sana uwezo wako wa kupanga programu na ESP32.
Hasa tutashughulikia matumizi ya aina tofauti za loops, kama vile for, while, na do while, kurudia kupitia vipengele vya array. Hii itakusaidia kubinafsisha kazi na kufanya programu zako ziwe na ufanisi zaidi. Ili kuona dhana hizi zikifanya kazi, hakikisha umeangalia video saa 2:30 kwa maonyesho ya vitendo.
Vifaa Vilivyoelezwa
Kipengele kikuu cha vifaa tutakachotumia katika mafunzo haya ni microcontroller ya ESP32. ESP32 ni microcontroller yenye nguvu na gharama nafuu ambayo ina uwezo wa Wi-Fi na Bluetooth, na kuifanya kufaa kwa matumizi mbalimbali ya IoT. Bodi hii inaweza kufanya kazi sawa na Arduino Uno huku ikitoa utendaji wa ziada, kama vile muunganisho wa wingu.
Katika mafunzo haya mahususi, tutatumia array kudhibiti matokeo kupitia digital pins. Kila pin inaweza kuwekwa kuwa high au low, ikituruhusu kuunda mifumo au tabia mbalimbali kulingana na data iliyohifadhiwa kwenye array. GPIO pins za ESP32 zitatengenezwa kwa ajili ya matokeo, ikituruhusu kudhibiti vifaa au vipengele vilivyounganishwa.
Maagizo ya Uunganishaji
ESP32-07_74HC595_walking_light_wiring
Ili kuunganisha ESP32 yako kwa mafunzo haya, anza kwa kuunganisha digital pins. Unganisha pin ya STcp (27) kwenye pin ya ST_CP ya shift register yako. Pin ya SHcp (26) inapaswa kuunganishwa kwenye pin ya SH_CP ya shift register. Hatimaye, unganisha pin ya DS (25) kwenye pin ya DS ya shift register. Hakikisha kwamba ground ya ESP32 imeunganishwa kwenye ground ya shift register ili kutoa rejea ya pamoja.
Hakikisha unatoa nguvu kwa ESP32 kwa kutumia usambazaji thabiti wa 3.3 V. Ikiwa unatumia vipengele vya ziada, hakikisha vinaendana na viwango vya voltage vya ESP32. Ni muhimu kuangalia mara mbili miunganisho yako kabla ya kuwasha mfumo ili kuepuka uharibifu wowote (katika video saa 4:10).
Mifano ya Kanuni na Mwongozo
Katika kipande cha kanuni kilichotolewa, tunafafanua array inayoitwa datArray ambayo inashikilia thamani za binary. Kila thamani kwenye array inalingana na mfumo tofauti ambao unaweza kutolewa kupitia GPIO pins. Array inafafanuliwa kama ifuatavyo:
Array hii ina uwakilishi wa binary, ambapo kila bit inalingana na hali ya pin (washa au zima). Katika kazi ya loop(), tunarudia kupitia array ili kutoa mifumo hii kwa kutumia for loop:
for(int num = 0; num < 10; num++) {
digitalWrite(STcp, LOW);
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH);
delay(1000);
}
Katika loop hii, tunaendelea kutuma data kutoka kwenye datArray hadi kwenye shift register, na kuunda athari ya mwanga unaotembea. delay(1000) huanzisha pause kati ya kila mfumo, ikiruhusu mabadiliko yaonekane. Kwa kanuni kamili, tafadhali rejea hapa chini kwani itapakia kwa njia ya nguvu.
Maonyesho / Nini cha Kutarajia
Baada ya kukamilisha uunganishaji na kupakia kanuni, unapaswa kuona athari ya mwanga unaotembea kwenye vifaa vilivyounganishwa. Kila bit kwenye array itawaka kwa mfuatano, na kuunda mfumo wa kuvutia wa kuona. Kuwa makini na miunganisho iliyogeuzwa kwani inaweza kusababisha tabia zisizotarajiwa (katika video saa 8:15).
807-ESP32 Tutorial 7/55 - Walking Light using 74HC595 and learn array
Språk: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}