Výukový program ESP32 10/55 - Digitálny počítadlo pomocou sedemsegmentového displeja 74HC595 - ESP32 IoT výučbová súprava
V tomto návode si vytvoríme digitálny počítadlo pomocou sedemsegmentového displeja ovládaného mikrokontrolérom ESP32. Počítadlo sa bude zvyšovať od 0 do 9 a potom sa znižovať späť na 0, čo poskytne jasnú vizualizáciu procesu počítania. Tiež preskúmame, ako zapnúť jednotlivé segmenty a zobraziť písmená na sedemsegmentovom displeji.

Tento projekt využíva posuvný register 74HC595 na ovládanie displeja, čo nám umožňuje efektívne spravovať segmenty bez použitia príliš mnoho GPIO pinov na ESP32. Odosielaním binárnych hodnôt do posuvného registra môžeme rozsvietiť príslušné segmenty na zobrazenie čísel a písmen. Pre hlbšie pochopenie procesu si môžete pozrieť video (vo videu o 03:15).
Vysvetlenie hardvéru
Hlavné komponenty tohto projektu zahŕňajú mikrokontrolér ESP32, posuvný register 74HC595 a sedemsegmentový displej. ESP32 je výkonný mikrokontrolér so vstavanými funkciami Wi-Fi a Bluetooth, čo ho robí vhodným pre IoT projekty. 74HC595 je posuvný register, ktorý nám umožňuje ovládať viacero výstupov pomocou iba niekoľkých vstupných pinov. Funguje tak, že prijíma sériové dáta a konvertuje ich na paralelný výstup, čo je ideálne na ovládanie sedemsegmentového displeja.
Sedemsegmentový displej pozostáva zo siedmich jednotlivých LED diód usporiadaných do vzoru osmičky. Každý segment môže byť zapnutý alebo vypnutý odoslaním príslušnej binárnej hodnoty do posuvného registra. Napríklad na zobrazenie čísla 0 musia byť rozsvietené všetky segmenty okrem stredného (G).
Podrobnosti z datasheetu
| Výrobca | Texas Instruments |
|---|---|
| Označenie súčiastky | 74HC595 |
| Logické/IO napätie | 2 V až 6 V |
| Napájacie napätie | 2 V až 6 V |
| Výstupný prúd (na kanál) | 6 mA |
| Špičkový prúd (na kanál) | 35 mA |
| Odporúčaná PWM frekvencia | Do 1 kHz |
| Vstupné logické prahy | 0,3 VCC až 0,7 VCC |
| Napäťový úbytok / RDS(on) / saturácia | Max. 0,2 V |
| Tepelné limity | 125 °C |
| Puzdro | DIP-16 |
| Poznámky / varianty | Dostupné v rôznych puzdrách |
- Zabezpečte správne napájacie napätie (2 V až 6 V).
- Obmedzte výstupný prúd, aby ste zabránili prehriatiu.
- Použite samostatné rezistory pre každý segment pre optimálny jas.
- Buďte opatrní pri zapájaní, aby ste predišli skratom a nesprávnym pripojeniam.
- Starostlivo dodržiavajte pinout, aby ste predišli nesprávnej konfigurácii.
Pokyny na zapojenie

Začnite prípravou svojej breadboard. Pripojte uzemňovaciu lištu (modrý pruh) a napájaciu lištu (červený pruh). Uzemnenie by malo byť pripojené k modrému pruhu na jednej strane breadboard, zatiaľ čo napájanie by malo byť pripojené k červenému pruhu na opačnej strane. Použite čierny vodič na pripojenie uzemnenia ESP32 k uzemňovacej lište a červený vodič na pripojenie pinu 3,3V ESP32 k napájacej lište.
Ďalej vložte posuvný register 74HC595 do breadboard, pričom sa uistite, že zárez je správne orientovaný. Pripojte pin 11 (DS) k pinu 25 na ESP32, pin 12 (SH_CP) k pinu 26 a pin 14 (ST_CP) k pinu 27. Pripojte uzemnenie (pin 8) posuvného registra k uzemňovacej lište a pin 10 (MR) k napájacej lište pre aktiváciu.
Pre sedemsegmentový displej pripojte piny zodpovedajúce segmentom (a-g) k výstupným pinom posuvného registra. Použite rezistor (220 ohmov) v sérii pre každý segment na obmedzenie prúdu. Uistite sa, že máte správne pripojenia pre spoločný pin, ktorý môže byť buď spoločná anóda alebo katóda v závislosti od typu vášho displeja.
Príklady kódu a vysvetlenie
Vo funkcii setup začneme definovaním pinov pripojených k posuvnému registru ako výstupov. To zabezpečí, že náš ESP32 môže ovládať dáta odosielané na displej.
void setup ()
{
//nastaviť piny ako výstup
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Tu definujeme STcp, SHcp a DS ako piny pripojené k ST_CP, SH_CP a DS posuvného registra. Nastavenie týchto pinov ako výstupov nám umožňuje ovládať posuvný register.
Hlavná slučka programu počíta od 0 do 9 a odosiela príslušné hodnoty na displej pomocou funkcie shiftOut.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //uzemni ST_CP a drž ho nízko, pokiaľ vysielaš
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //potiahni ST_CP vysoko, aby sa uložili dáta
delay(1000);
}
Táto slučka inkrementuje premennú num a každú sekundu posiela zodpovedajúcu hodnotu z datArray na displej. Funkcia shiftOut prenáša dáta do posuvného registra, ktorý následne rozsvieti príslušné segmenty.
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahraní kódu by si mal vidieť, ako sedemsegmentový displej počíta od 0 do 9, krátko sa zastaví a potom počíta späť dole na 0. Každé číslo sa zobrazí na jednu sekundu. Ak chceš zrýchliť počítanie, môžeš upraviť oneskorenie v slučke (vo videu v čase 15:30).
Pri manipulácii so segmentmi jednotlivo nezabudni posielať správne binárne hodnoty na zobrazenie písmen alebo konkrétnych segmentov. Ak sa displej zdá byť slabý, zváž pridanie jednotlivých rezistorov pre každý segment, aby si zabezpečil konzistentný jas na celom displeji.
Časové značky videa
- 00:00 Začiatok
- 1:53 Úvod do sedemsegmentového displeja
- 4:38 Vysvetlenie zapojenia
- 13:15 Arduino kód-1
- 17:01 Výber COM portu a dosky ESP32
- 18:43 Demonštrácia-1
- 20:13 Zobrazenie iba jednej číslice
- 21:38 Počítadlo hore a dole
- 23:07 Zapínanie/vypínanie každého segmentu
- 24:53 Zobrazenie A, B, C, D, E a F
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);
}
}
Common Course Links
Common Course Files
Resources & references
-
DocumentationESP32 Tutorial 10/55 - SunFounder page for Seven Segmentdocs.sunfounder.com
Files📁
No files available.