Nota
Ciao, benvenuto nella Community di SunFounder per appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti?
Supporto esperto: Risolvi problemi post-vendita e 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: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime speciali.
Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Omaggi Festivi: Partecipa a omaggi e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi stesso!
6.6 Dado Digitale¶
Questo progetto si basa sul progetto 2.5 Display Numerico, aggiungendo un pulsante per controllare la cifra visualizzata sul display a sette segmenti.
Quando il pulsante viene premuto, il display a 7 segmenti scorre attraverso i numeri da 1 a 6 e, quando il pulsante viene rilasciato, visualizza un numero casuale.
Questo ciclo si ripete ogni volta che il pulsante viene premuto.
Componenti Necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un intero kit, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit di Partenza ESP32 |
320+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK DI ACQUISTO |
|---|---|
Schema Elettrico
Questo progetto si basa sul progetto 2.5 Display Numerico, aggiungendo un pulsante per controllare la cifra visualizzata sul display a sette segmenti.
Il pulsante è collegato direttamente a IO13 senza un resistore di pull-up o pull-down esterno perché IO13 ha un resistore di pull-up interno di 47K, eliminando la necessità di un resistore esterno aggiuntivo.
Cablaggio
Codice
Nota
Apri il file
6.6_digital_dice.pysituato nel percorsoesp32-starter-kit-main\micropython\codes, oppure copia e incolla il codice in Thonny. Poi, clicca su «Esegui Script Corrente» o premi F5 per eseguirlo.Assicurati di selezionare l’interprete «MicroPython (ESP32).COMxx» nell’angolo in basso a destra.
import machine
import time
import random
# Definisci il codice del segmento per un display a 7 segmenti a anodo comune
SEGCODE = [0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f]
# Inizializza i pin per il registro a scorrimento 74HC595
sdi = machine.Pin(25, machine.Pin.OUT) # DS
rclk = machine.Pin(27, machine.Pin.OUT) # STcp
srclk = machine.Pin(26, machine.Pin.OUT) # SHcp
button = machine.Pin(13, machine.Pin.IN) # Pin del pulsante
# Definisci la funzione hc595_shift per trasferire i dati nel registro a scorrimento 74HC595
def hc595_shift(dat):
# Imposta il pin RCLK su basso
rclk.off()
# Itera attraverso ciascun bit (da 7 a 0)
for bit in range(7, -1, -1):
# Estrai il bit corrente dai dati di input
value = 1 & (dat >> bit)
# Imposta il pin SRCLK su basso
srclk.off()
# Imposta il valore del pin SDI
sdi.value(value)
# Trasferisci il bit corrente nel registro a scorrimento impostando il pin SRCLK su alto
srclk.on()
# Latch i dati nel registro di memoria impostando il pin RCLK su alto
rclk.on()
# Inizializza il seme casuale
random.seed(time.ticks_us())
num = 1
button_state = False
# Definisci la funzione di callback del pulsante per attivare/disattivare lo stato del pulsante
def button_callback(pin):
global button_state
button_state = not button_state
# Collega la funzione di callback del pulsante al bordo discendente del pin del pulsante
button.irq(trigger=machine.Pin.IRQ_FALLING, handler=button_callback)
# Visualizza continuamente la cifra corrente sul display a 7 segmenti, scorrendo se il pulsante non è premuto
while True:
# Visualizza la cifra corrente sul display a 7 segmenti
hc595_shift(SEGCODE[num])
# Se il pulsante è premuto e lo stato del pulsante è True
if button_state:
pass
# Se il pulsante viene premuto di nuovo e lo stato del pulsante è False, genera una nuova cifra casuale
if not button_state:
num = random.randint(1, 6)
time.sleep_ms(10) # Regola questo valore per controllare la frequenza di aggiornamento del display
Durante l’esecuzione del programma, premendo il pulsante, il display a 7 segmenti scorrerà e visualizzerà casualmente un numero compreso tra 1 e 6.
Premendo nuovamente il pulsante, il display a 7 segmenti si fermerà e mostrerà un numero specifico. Premi il pulsante un’altra volta e il display a 7 segmenti riprenderà a scorrere tra le cifre.