Nota

Ciao, benvenuto nella community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci di nuovi prodotti e alle anteprime esclusive.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

5.3 - Contatore di Tempo

Il display a 4 cifre e 7 segmenti è costituito da quattro display a 7 segmenti che funzionano insieme.

Il display a 4 cifre e 7 segmenti funziona indipendentemente. Utilizza il principio della persistenza visiva umana per visualizzare rapidamente i caratteri di ciascun segmento in un ciclo, formando stringhe continue.

Ad esempio, quando sul display appare «1234», viene visualizzato «1» sul primo segmento, mentre «234» non è visibile. Dopo un breve intervallo, il secondo segmento mostra «2», mentre il 1°, 3° e 4° segmento non mostrano nulla, e così via, il display a quattro cifre mostra le cifre in sequenza. Questo processo è molto rapido (tipicamente 5ms), e grazie all’effetto di persistenza ottica e al principio della persistenza visiva, possiamo vedere tutte e quattro le cifre contemporaneamente.

Componenti Necessari

In questo progetto, ci servono i seguenti componenti.

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK PER L’ACQUISTO

Kepler Kit

450+

Kepler Ultimate Kit

Puoi anche acquistarli separatamente dai link qui sotto.

SN

INTRODUZIONE COMPONENTE

QUANTITÀ

LINK PER L’ACQUISTO

1

Introduzione al Pico W

1

ACQUISTA

2

Cavo Micro USB

1

3

Breadboard

1

ACQUISTA

4

Cavi Jumper

Alcuni

ACQUISTA

5

Resistenza

4(220Ω)

ACQUISTA

6

Display a 7 segmenti a 4 cifre

1

7

74HC595

1

ACQUISTA

Schema Elettrico

sch_4dig

Qui il principio di cablaggio è sostanzialmente lo stesso di 5.1 Microchip - 74HC595, l’unica differenza è che Q0-Q7 sono collegati ai pin da a a g del display a 4 cifre e 7 segmenti.

Poi G10 ~ G13 selezioneranno quale display a 7 segmenti attivare.

Cablaggio

wiring_4dig

Codice

Nota

  • Puoi aprire il file 5.3_time_counter.ino nel percorso kepler-kit-main/arduino/5.3_time_counter.

  • Oppure copia questo codice nell”Arduino IDE.

  • Non dimenticare di selezionare la scheda (Raspberry Pi Pico) e la porta corretta prima di cliccare sul pulsante Upload.

Dopo l’esecuzione del programma, vedrai il display a 4 cifre e 7 segmenti diventare un contatore e il numero aumenterà di 1 ogni secondo.

Come funziona?

L’invio di segnali a ciascun display a 7 segmenti avviene nello stesso modo di 5.2 - Visualizzazione Numeri, utilizzando la funzione hc595_shift(). Il punto cruciale del display a 4 cifre e 7 segmenti è attivare selettivamente ciascun display a 7 segmenti. Il codice associato è il seguente.

const int placePin[4] = {13,12,11,10};

void setup ()
{
    for (int i = 0; i<4;i++){
        pinMode(placePin[i],OUTPUT);
    }
}

void loop()
{
    pickDigit(0);
    hc595_shift(count%10/1);

    pickDigit(1);
    hc595_shift(count%100/10);

    pickDigit(2);
    hc595_shift(count%1000/100);

    pickDigit(3);
    hc595_shift(count%10000/1000);
}

void pickDigit(int digit){
    for(int i = 0; i < 4; i++){
        digitalWrite(placePin[i],HIGH);
    }
    digitalWrite(placePin[digit],LOW);
}

Qui, quattro pin (GP10, GP11, GP12, GP13) vengono utilizzati per controllare ciascun segmento del display a 4 cifre e 7 segmenti individualmente. Quando lo stato di questi pin è LOW, il display a 7 segmenti corrispondente è attivo; quando lo stato è HIGH, il display a 7 segmenti non funziona.

Qui la funzione pickDigit(digit) viene utilizzata per disattivare tutti i display a 7 segmenti e poi attivare un determinato segmento singolarmente. Successivamente, hc595_shift() viene utilizzato per scrivere il codice di 8 bit corrispondente per il display a 7 segmenti.

Il display a 4 cifre e 7 segmenti deve essere attivato continuamente a turno in modo che possiamo vedere visualizzate tutte e quattro le cifre, il che significa che il programma principale non può facilmente aggiungere codice che influenzi la temporizzazione.

Tuttavia, è necessario aggiungere una funzione di temporizzazione a questo esempio, se aggiungiamo un delay (1000), potremo rilevare l’illusione dei quattro display a 7 segmenti che funzionano contemporaneamente, esponendo il fatto che solo un display a 7 segmenti alla volta si illumina.

Pertanto, utilizzare la funzione millis() è un ottimo modo per farlo.

void setup ()
{
    timerStart = millis();
}

void loop()
{
    unsigned int count = (millis()-timerStart)/1000;
}

La funzione millis() ottiene il numero di millisecondi trascorsi dall’inizio del programma corrente. Registriamo il primo valore temporale come timerStart;

poi, quando dobbiamo ottenere nuovamente il tempo, richiamiamo la funzione millis() e sottraiamo timerStart dal valore per ottenere da quanto tempo il programma è in esecuzione.

Infine, converti questo valore temporale e lascia che il display a 4 cifre e 7 segmenti lo mostri.