V tomto návode si ukážeme, ako používať polia v programovaní ESP32 v Arduine. Polia vám umožňujú uložiť viacero hodnôt do jednej premennej, čo uľahčuje správu údajov, najmä pri práci s kolekciami podobných položiek. Tento návod vás prevedie definovaním, prístupom k poliam a ich úpravou, ako aj využitím cyklov na efektívnu prácu s nimi. Pochopenie týchto konceptov výrazne zlepší vašu schopnosť programovať s ESP32.
Konkrétne sa zameriame na používanie rôznych typov cyklov, ako sú for, while a do while, na prechádzanie prvkami poľa. To vám pomôže automatizovať úlohy a zefektívniť vaše programy. Ak chcete vidieť tieto koncepty v praxi, nezabudnite si pozrieť video v čase 2:30 pre praktickú ukážku.
Vysvetlenie hardvéru
Hlavným hardvérovým komponentom, ktorý budeme používať v tomto návode, je mikrokontrolér ESP32. ESP32 je výkonný a lacný mikrokontrolér, ktorý ponúka funkcie Wi-Fi aj Bluetooth, vďaka čomu je vhodný pre širokú škálu IoT aplikácií. Doska dokáže vykonávať úlohy podobné Arduinu Uno a zároveň ponúka ďalšie funkcie, ako je pripojenie do cloudu.
V tomto konkrétnom návode použijeme pole na ovládanie výstupov cez digitálne piny. Každý pin môže byť nastavený na vysokú alebo nízku úroveň, čo nám umožňuje vytvárať rôzne vzory alebo správanie na základe údajov uložených v poli. GPIO piny ESP32 budú nakonfigurované ako výstupy, čo nám umožní ovládať pripojené zariadenia alebo komponenty.
Pokyny na zapojenie
ESP32-07_74HC595_walking_light_wiring
Na zapojenie ESP32 pre tento návod začnite pripojením digitálnych pinov. Pripojte pin STcp (27) na pin ST_CP vášho posuvného registra. Pin SHcp (26) by mal byť pripojený na pin SH_CP posuvného registra. Nakoniec pripojte pin DS (25) na pin DS posuvného registra. Uistite sa, že uzemnenie ESP32 je pripojené k uzemneniu posuvného registra, aby ste zabezpečili spoločný referenčný bod.
Nezabudnite napájať ESP32 stabilným napätím 3,3 V. Ak používate ďalšie komponenty, uistite sa, že sú kompatibilné s napäťovými úrovňami ESP32. Je dôležité skontrolovať zapojenie pred zapnutím systému, aby ste predišli možnému poškodeniu (vo videu v čase 4:10).
Príklady kódu a vysvetlenie
V poskytnutom úryvku kódu definujeme pole s názvom datArray, ktoré obsahuje binárne hodnoty. Každá hodnota v poli zodpovedá inému vzoru, ktorý možno výstupovať cez GPIO piny. Pole je definované takto:
Toto pole obsahuje binárne reprezentácie, kde každý bit zodpovedá stavu pinu (zapnutý alebo vypnutý). Vo funkcii loop() prechádzame pole a výstupujeme tieto vzory pomocou cyklu for:
for(int num = 0; num < 10; num++) {
digitalWrite(STcp, LOW);
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH);
delay(1000);
}
V tomto cykle nepretržite posielame dáta z datArray do posuvného registra, čím vytvárame efekt bežiaceho svetla. Funkcia delay(1000) vkladá pauzu medzi jednotlivé vzory, aby boli zmeny viditeľné. Pre celý kód sa pozrite nižšie, pretože sa načíta dynamicky.
Ukážka / Čo očakávať
Po dokončení zapojenia a nahraní kódu by ste mali vidieť efekt bežiaceho svetla na pripojených zariadeniach. Každý bit v poli sa postupne rozsvieti, čím vytvorí vizuálne zaujímavý vzor. Buďte opatrní pri obrátených pripojeniach, pretože môžu viesť k neočakávanému správaniu (vo videu v čase 8:15).
807-ESP32 Tutorial 7/55 - Walking Light using 74HC595 and learn array
Language: 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);
}
}