Pretraži kod

ESP32 Tutorijal 10/55 - Digitalni brojač koristeći Seven Segment Display 74HC595 -ESP32 IoT Learning kit

ESP32 Tutorijal 10/55 - Digitalni brojač koristeći Seven Segment Display 74HC595 -ESP32 IoT Learning kit

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.

ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1

Detalji iz tehničkog lista

Proizvođač Texas Instruments
Broj dijela 74HC595
Logički/IO napon 2 V do 6 V
Napon napajanja 2 V do 6 V
Izlazna struja (po kanalu) 6 mA
Maksimalna struja (po kanalu) 35 mA
Smjernice za PWM frekvenciju Do 1 kHz
Ulazni logički pragovi 0.3 VCC do 0.7 VCC
Pad napona / RDS(on) / zasićenje 0.2 V max
Toplotna ograničenja 125 °C
Pakovanje DIP-16
Napomene / varijante Dostupno u različitim pakovanjima

 

  • 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.

void setup ()
{
  //postavi pinove kao izlaz
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

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.

Vremenske oznake videa

  • 00:00 Početak
  • 1:53 Uvod u sedmosegmentni displej
  • 4:38 Objašnjeno ožičenje
  • 13:15 Arduino kod-1
  • 17:01 Odabir COM porta i ESP32 ploče
  • 18:43 Demonstracija-1
  • 20:13 Prikaz samo jedne cifre
  • 21:38 Brojač gore i dolje
  • 23:07 Uključivanje/isključivanje svakog segmenta
  • 24:53 Prikaz A, B, C, D, E i F

Slike

ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32-10-seven-segment-wiring
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);
  }
}

Resursi i reference

Datoteke📁

Nema dostupnih datoteka.