Tutorial ESP32 10/55 - Contatore digitale con display a sette segmenti 74HC595 - Kit di apprendimento IoT ESP32
In questo tutorial, creeremo un contatore digitale utilizzando un display a sette segmenti controllato dal microcontrollore ESP32. Il contatore aumenterà da 0 a 9 e poi decrescerà nuovamente a 0, fornendo una chiara visualizzazione del processo di conteggio. Esploreremo anche come accendere segmenti individuali e visualizzare lettere sul display a sette segmenti.

Questo progetto utilizza un registro di traslazione 74HC595 per controllare il display, permettendoci di gestire efficientemente i segmenti senza utilizzare troppi pin GPIO sull'ESP32. Inviando valori binari al registro di traslazione, possiamo accendere i segmenti corrispondenti per rappresentare numeri e lettere. Per una comprensione più profonda del processo, puoi fare riferimento al video (nel video a 03:15).
Hardware Spiegato
I componenti principali di questo progetto includono il microcontrollore ESP32, un registratore di scorrimento 74HC595 e un display a sette segmenti. L'ESP32 è un potente microcontrollore con capacità Wi-Fi e Bluetooth integrate, rendendolo adatto per progetti IoT. Il 74HC595 è un registratore di scorrimento che ci consente di controllare più uscite utilizzando solo pochi pin di ingresso. Funziona prendendo dati seriali e convertendoli in uscita parallela, perfetto per pilotare un display a sette segmenti.
Il display a sette segmenti consiste di sette LED individuali disposti in un modello a figuretta. Ogni segmento può essere acceso o spento inviando il valore binario appropriato al registro a scorrimento. Ad esempio, per visualizzare il numero 0, tutti i segmenti tranne quello centrale (G) devono essere accesi.
Dettagli del datasheet
| Produttore | Texas Instruments |
|---|---|
| Numero di parte | 74HC595 |
| Tensione logica/IO | 2 V a 6 V |
| Tensione di alimentazione | 2 V a 6 V |
| Corrente di uscita (per canale) | 6 mA |
| Corrente di picco (per canale) | 35 mA |
| Linee guida sulla frequenza PWM | Fino a 1 kHz |
| Soglie logiche di ingresso | 0,3 VCCa 0,7 VCC |
| Caduta di tensione / RDS(on)/ saturazione | 0,2 V max |
| Limiti termici | 125 °C |
| Pacchetto | DIP-16 |
| Note / varianti | Disponibile in diverse confezioni |
- Assicurati di fornire la giusta tensione (da 2 V a 6 V).
- Limitare la corrente in uscita per prevenire surriscaldamenti.
- Utilizzare resistori separati per ciascun segmento per una luminosità ottimale.
- Fai attenzione al cablaggio per evitare cortocircuiti e connessioni errate.
- Segui attentamente il pinout per evitare configurazioni errate.
Istruzioni di cablaggio

Inizia configurando il tuo breadboard. Collega il binario di terra (linea blu) e il binario di alimentazione (linea rossa). La terra dovrebbe collegarsi alla linea blu su un lato del breadboard, mentre l'alimentazione dovrebbe collegarsi alla linea rossa sul lato opposto. Usa un filo nero per collegare la terra dell'ESP32 al binario di terra e un filo rosso per collegare il pin da 3,3V dell'ESP32 al binario di alimentazione.
Inserire poi il registro di scorrimento 74HC595 nella breadboard, assicurandosi che il profilo sia orientato correttamente. Collegare il pin 11 (DS) al pin 25 dell'ESP32, il pin 12 (SH_CP) al pin 26 e il pin 14 (ST_CP) al pin 27. Collegare il terminale di massa (pin 8) del registro di scorrimento al binario di massa e il pin 10 (MR) al binario di alimentazione per l'attivazione.
Per il display a sette segmenti, collegare i pin corrispondenti ai segmenti (a-g) ai pin di uscita del registratore di scorrimento. Utilizzare una resistenza (220 ohm) in serie per ogni segmento per limitare la corrente. Assicurati di avere collegamenti adeguati per il pin comune, che può essere sia anodo comune che catodo comune a seconda del tipo di display.
Esempi di codice e guida passo passo
Nella funzione di configurazione, iniziamo definendo i pin collegati al registratore di scorrimento come uscite. Questo assicura che il nostro ESP32 possa controllare i dati inviati al display.
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Qui definiamoSTcp,SHcp, eDScome i pin collegati a ST_CP, SH_CP e DS del registro di scorrimento, rispettivamente. Impostare questi pin come uscite ci consente di controllare il registro di scorrimento.
Il ciclo principale del programma conta da 0 a 9, inviando i valori corrispondenti al display usando ilshiftOutfunzione.
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);
}
Questo ciclo incrementa ilnumvariabile, inviando il valore corrispondente da thedatArrayalla visualizzazione ogni secondo. IlshiftOutla funzione trasmette i dati al registro di scorrimento, che poi illumina i segmenti appropriati.
Dimostrazione / Cosa Aspettarsi
Una volta completato il cablaggio e caricato il codice, dovresti vedere il display a sette segmenti contare da 0 a 9, facendo una breve pausa prima di contare nuovamente fino a 0. Ogni numero verrà visualizzato per un secondo. Se desideri accelerare il conteggio, puoi regolare il ritardo nel ciclo (nel video alle 15:30).
Quando si manipolano i segmenti singolarmente, ricorda di inviare i valori binari corretti per visualizzare lettere o segmenti specifici. Se il display appare opaco, considera di aggiungere resistori individuali per ogni segmento per garantire una luminosità uniforme su tutto il display.
Timestamp video
- 00:00 Inizio
- 1:53 Introduzione ai sette segmenti
- 4:38 Cablaggio spiegato
- 13:15 Codice Arduino-1
- 17:01 Selezionando la porta COM e la scheda ESP32
- 18:43 Dimostrazione-1
- 20:13 Visualizzazione di una sola cifra
- 21:38 Contatore su e giù
- 23:07 Accendendo/spegnendo ogni segmento
- 24:53 Visualizzazione di A, B, C, D, E e 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 ()
{
// imposta i pin come uscita
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); // collegare ST_CP a terra e mantenere basso per tutto il tempo in cui si sta trasmettendo
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); // tirare il ST_CPST_CP per salvare i dati
delay(1000);
}
}
Common Course Links
Common Course Files
Risorse e riferimenti
-
DocumentazioneTutorial ESP32 10/55 - Pagina SunFounder per Seven Segmentdocs.sunfounder.com
File📁
Nessun file disponibile.