Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Unisciti agli appassionati per approfondire Raspberry Pi, Arduino ed ESP32 insieme a noi.
Perché unirti?
Supporto esperto: Risolvi problemi post-vendita e affronta sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
Sconti speciali: Approfitta di sconti riservati sui nostri prodotti più recenti.
Promozioni e omaggi festivi: Partecipa a promozioni e omaggi durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
6.2 Dado Digitale¶
Qui utilizziamo un pulsante, un display a 7 segmenti e un 74hc595 per creare un dado elettronico. Ogni volta che si preme il pulsante, viene generato un numero casuale compreso tra 1 e 6 e visualizzato sul display a 7 segmenti.
Componenti necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente comodo acquistare un intero kit, ecco il link:
Nome |
OGGETTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit Starter 3 in 1 |
380+ |
Puoi anche acquistarli separatamente dai link qui sotto.
INTRODUZIONE COMPONENTI |
LINK DI ACQUISTO |
|---|---|
Schema
Collegamenti
Codice
Nota
Apri il file
6.2.electronic_dice.inonel percorso3in1-kit\basic_project\6.2.electronic_dice.Oppure copia questo codice nell”Arduino IDE.
Oppure carica il codice tramite Arduino Web Editor.
Quando il codice è caricato correttamente, il display a 7 segmenti mostrerà 0-7 in una rapida sequenza, e quando si preme il pulsante, visualizzerà un numero casuale e interromperà lo scorrimento. La sequenza di scorrimento ricomincia quando si preme nuovamente il pulsante.
Come funziona?
Questo progetto è basato su 5.10 ShiftOut(Display a Segmenti) con un pulsante per avviare/mettere in pausa la sequenza di scorrimento sul display a 7 segmenti.
Inizializza ciascun pin e leggi il valore del pulsante.
void setup () { ... attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING); }
Qui viene utilizzato un interrupt per leggere lo stato del pulsante. Il valore predefinito di
buttonPinè basso, che passa da basso ad alto quando si preme il pulsante.rollDicerappresenta la funzione da chiamare quando l’interrupt viene attivato, ed è utilizzata per alternare il valore della variabilestate.FALLINGsignifica che l’interrupt viene attivato quandobuttonPinpassa da alto a basso.
Quando la variabile
stateè 0, la funzioneshowNumber()viene chiamata per far sì che il display a 7 segmenti visualizzi casualmente un numero tra 1 e 7.void loop() { if (state == 0) { showNumber((int)random(1, 7)); delay(50); } }
A proposito della funzione
rollDice().void rollDice() { state = !state; }
Quando questa funzione viene chiamata, alterna il valore di state, ad esempio da 1 a 0 e viceversa.
A proposito della funzione
showNumber().void showNumber(int num) { digitalWrite(STcp, LOW); //ground ST_CP and hold low for as long as you are transmitting shiftOut(DS, SHcp, MSBFIRST, datArray[num]); //return the latch pin high to signal chip that it //no longer needs to listen for information digitalWrite(STcp, HIGH); //pull the ST_CPST_CP to save the data }
Questo è il codice dentro
loop()nel progetto 5.10 ShiftOut(Display a Segmenti) nella funzioneshowNumber().