Dado elettronico con Arduino
Template:Lavori in corsoTemplate:Risorsa
Questa risorsa descrive come realizzare un dado elettronico, che mostra un numero casuale (compreso tra uno e sei) dopo la pressione di un tasto.

Principio di funzionamento
Alla pressione del pulsante il generatore di numeri casuali invia al display un numero da 1 a 6 e il display lo mostra.
Sensori e attuatori
- display a 7 segmenti
- 7 resistenze da
- bottone
Schema di montaggio
Codice
Definisco tutte le variabili
//Associamo ad ogni segmento il proprio piedino
#define LED_A 5
#define LED_B 6
#define LED_C 7
#define LED_D 8
#define LED_E 9
#define LED_F 10
#define LED_G 11
#define DP 12
#define buttonPin 2
#delay 50
int buttonState;
int ran;
const int time = 1000;
Uso la funzione setup() per inizializzare le variabili
void setup ()
{
//indiriziamo i led in uscita e il pulsante di start
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
pinMode(LED_D, OUTPUT);
pinMode(LED_E, OUTPUT);
pinMode(LED_F, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
//inizializziamo il generatore di numeri pseudo-casuali
randomSeed(analogRead(0));
}
Dopo aver creato una funzione setup(), che inizializza e imposta i valori iniziali, la funzione loop() esegue esattamente ciò che suggerisce il nome della risorsa e si ripete per sempre, consentendo al programma di cambiare numero estratto.
void loop()
{
buttonState = digitalRead(buttonPin); // Questa variabile memorizza lo stato digitale corrente del pulsante
if (buttonState == LOW)
{
strobe(); //lampeggia
AZZERA(); //azzera
ran = random(1, 6);
//specifichiamo i casi possibili (da 1 a 6)
switch(ran) {
case 1:
UNO();
break;
case 2:
DUE();
break;
case 3:
TRE();
break;
case 4:
QUATTRO();
break;
case 5:
CINQUE();
break;
case 6:
SEI();
break;
default:
break;
}
delay (time);
}
}
tramite l'uso della funzione strobe() accendiamo e spegniamo i led con un ritardo di 50 ms
void strobe()
{
digitalWrite(DP, HIGH);
delay(50);
digitalWrite(DP, LOW);
}
//indichiamo ad arduino che led si devono accendere sul display per formare i numeri (da 1 a 6)
void UNO()
{
digitalWrite(LED_B, HIGH);
digitalWrite(LED_C, HIGH);
}
void DUE()
{
digitalWrite(LED_A, HIGH);
digitalWrite(LED_B, HIGH);
digitalWrite(LED_D, HIGH);
digitalWrite(LED_E, HIGH);
digitalWrite(LED_G, HIGH);
}
void TRE()
{
digitalWrite(LED_A, HIGH);
digitalWrite(LED_B, HIGH);
digitalWrite(LED_D, HIGH);
digitalWrite(LED_C, HIGH);
digitalWrite(LED_G, HIGH);
}
void QUATTRO()
{
digitalWrite(LED_B, HIGH);
digitalWrite(LED_C, HIGH);
digitalWrite(LED_F, HIGH);
digitalWrite(LED_G, HIGH);
}
void CINQUE()
{
digitalWrite(LED_A, HIGH);
digitalWrite(LED_C, HIGH);
digitalWrite(LED_D, HIGH);
digitalWrite(LED_F, HIGH);
digitalWrite(LED_G, HIGH);
}
void SEI()
{
digitalWrite(LED_A, HIGH);
digitalWrite(LED_C, HIGH);
digitalWrite(LED_D, HIGH);
digitalWrite(LED_E, HIGH);
digitalWrite(LED_F, HIGH);
digitalWrite(LED_G, HIGH);
}
void AZZERA()
{
// spegne tutti i led
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, LOW);
digitalWrite(LED_D, LOW);
digitalWrite(LED_E, LOW);
digitalWrite(LED_F, LOW);
digitalWrite(LED_G, LOW);
}
Espansioni suggerite
Il gioco può essere ampliato con un numero maggiore di dadi (per esempio due).