U ovom tutorijalu ćemo napraviti digitalni brojač koristeći sedmosegmentni displej kojim upravlja ESP32 mikrokontroler. Brojač će se povećavati od 0 do 9, a zatim se smanjivati nazad na 0, pružajući jasan vizualni prikaz procesa brojanja. Također ćemo istražiti kako uključiti pojedinačne segmente i prikazati slova na sedmosegmentnom displeju.
ESP32_Animte7Segment-segments
Ovaj projekat koristi 74HC595 pomični registar za upravljanje displejem, što nam omogućava da efikasno upravljamo segmentima bez korištenja previše GPIO pinova na ESP32. Slanjem binarnih vrijednosti pomičnom registru, možemo upaliti odgovarajuće segmente za prikaz brojeva i slova. Za dublje razumijevanje procesa, možete pogledati video (u videu na 03:15).
ESP32_Animte7Segment-letters
Objašnjenje hardvera
Glavne komponente ovog projekta uključuju ESP32 mikrokontroler, 74HC595 pomični registar i sedmosegmentni displej. ESP32 je moćan mikrokontroler sa ugrađenim Wi-Fi i Bluetooth mogućnostima, što ga čini pogodnim za IoT projekte. 74HC595 je pomični registar koji nam omogućava da upravljamo višestrukim izlazima koristeći samo nekoliko ulaznih pinova. Funkcioniše tako što uzima serijske podatke i pretvara ih u paralelni izlaz, što je savršeno za pokretanje sedmosegmentnog displeja.
Sedmosegmentni displej se sastoji od sedam pojedinačnih LED dioda raspoređenih u obliku osmice. Svaki segment se može uključiti ili isključiti slanjem odgovarajuće binarne vrijednosti pomičnom registru. Na primjer, za prikaz broja 0, svi segmenti osim srednjeg (G) moraju biti upaljeni.
Osigurajte odgovarajući napon napajanja (2 V do 6 V).
Ograničite izlaznu struju da biste spriječili pregrijavanje.
Koristite zasebne otpornike za svaki segment za optimalnu svjetlinu.
Budite oprezni sa ožičenjem da biste izbjegli kratke spojeve i pogrešne veze.
Pažljivo slijedite raspored pinova da biste izbjegli pogrešnu konfiguraciju.
Upute za ožičenje
ESP32-10-seven-segment-wiring
Započnite postavljanjem svoje breadboard ploče. Spojite uzemljenje (plava linija) i napajanje (crvena linija). Uzemljenje treba spojiti na plavu liniju na jednoj strani breadboard ploče, dok napajanje treba spojiti na crvenu liniju na suprotnoj strani. Koristite crnu žicu za spajanje uzemljenja ESP32 na liniju uzemljenja i crvenu žicu za spajanje 3.3V pina ESP32 na liniju napajanja.
Zatim umetnite 74HC595 pomični registar u breadboard ploču, pazeći da je zarez pravilno orijentisan. Spojite pin 11 (DS) na pin 25 na ESP32, pin 12 (SH_CP) na pin 26, i pin 14 (ST_CP) na pin 27. Spojite uzemljenje (pin 8) pomičnog registra na liniju uzemljenja i pin 10 (MR) na liniju napajanja za aktivaciju.
Za sedmosegmentni displej, spojite pinove koji odgovaraju segmentima (a-g) na izlazne pinove pomičnog registra. Koristite otpornik (220 oma) u seriji za svaki segment da biste ograničili struju. Osigurajte pravilne veze za zajednički pin, koji može biti ili zajednička anoda ili katoda ovisno o tipu vašeg displeja.
Primjeri koda i objašnjenje
U setup funkciji, počinjemo definiranjem pinova spojenih na pomični registar kao izlaza. Ovo osigurava da naš ESP32 može upravljati podacima koji se šalju na displej.
Ovdje definiramo STcp, SHcp i DS kao pinove spojene na ST_CP, SH_CP i DS pomičnog registra. Postavljanje ovih pinova kao izlaza omogućava nam upravljanje pomičnim registrom.
Glavna petlja programa broji od 0 do 9, šaljući odgovarajuće vrijednosti na displej koristeći shiftOut funkciju.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //uzemljite ST_CP i držite ga niskim sve dok prenosite
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //podignite ST_CP da sačuvate podatke
delay(1000);
}
Ova petlja povećava varijablu num, šaljući odgovarajuću vrijednost iz datArray na displej svake sekunde. Funkcija shiftOut prenosi podatke u shift registar, koji zatim pali odgovarajuće segmente.
Demonstracija / Šta očekivati
Kada je ožičenje završeno i kod učitan, trebali biste vidjeti sedmosegmentni displej kako broji od 0 do 9, praveći kratku pauzu prije nego što se vrati na 0. Svaki broj će biti prikazan jednu sekundu. Ako želite ubrzati brojanje, možete podesiti kašnjenje u petlji (u videu na 15:30).
Kada manipulišete segmentima pojedinačno, zapamtite da pošaljete ispravne binarne vrijednosti za prikaz slova ili specifičnih segmenata. Ako displej izgleda prigušeno, razmotrite dodavanje pojedinačnih otpornika za svaki segment kako biste osigurali ujednačenu svjetlinu na displeju.
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
Jezik: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
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);
}
}
Objava: Kao Amazon saradnik, zarađujemo od kvalifikovanih kupovina. To znači da možemo primiti malu proviziju ako kliknete na link i obavite kupovinu bez dodatnih troškova za vas.