Dado eletrônico

Com este exemplo você criará um dado eletrônico, onde o mesmo fica sendo embaralhado e ao ser pressionado o botão do circuito ele sorteia um número de 1 a 6 e demonstra nos LEDs qual o número que foi sorteado.

Dificuldade:

Montagem:

Programação:


Material Utilizado:

Arduino Uno

Cabo USB A para B

Protoboard 400

Resistor 330Ω

Resistor 10KΩ

Chave Táctil

LED Vermelho

LED Amarelo

LED Verde

Alguns Jumpers

A Montagem

O Sketch

#define CHAVE A5 //Define CHAVE como A5
#define A_1 2 //Define A_1 como 2
#define A_2 3 //Define A_2 como 3
#define A_3 4 //Define A_3 como 4
#define B_1 5 //Define B_1 como 5
#define B_2 6 //Define B_2 como 6
#define B_3 7 //Define B_3 como 7
#define C_1 8 //Define C_1 como 8
#define C_2 9 //Define C_2 como 9
#define C_3 10 //Define C_3 como 10

int
sorteio; //Variável para armazenagem no número sorteado

void
setup()
{   

pinMode
(CHAVE, INPUT_PULLUP); //COnfigura o pino A5 como entrada e habilita o resistor de pull-up

pinMode(A_1, OUTPUT); //Configura o pino 2 como saída
pinMode(A_2, OUTPUT); //Configura o pino 3 como saída   
pinMode
(A_3, OUTPUT); //Configura o pino 4 como saída   
pinMode
(B_1, OUTPUT); //Configura o pino 5 como saída   
pinMode
(B_2, OUTPUT); //Configura o pino 6 como saída   
pinMode
(B_3, OUTPUT); //Configura o pino 7 como saída   
pinMode
(C_1, OUTPUT); //Configura o pino 8 como saída   
pinMode
(C_2, OUTPUT); //Configura o pino 9 como saída   
pinMode
(C_3, OUTPUT); //Configura o pino 10 como saída   

digitalWrite(A_1, LOW); //Desliga o LED do pino 2   
digitalWrite(A_2, LOW); //Desliga o LED do pino 3   
digitalWrite
(A_3, LOW); //Desliga o LED do pino 4   

digitalWrite
(B_1, LOW); //Desliga o LED do pino 5   
digitalWrite
(B_2, LOW); //Desliga o LED do pino 6   
digitalWrite
(B_3, LOW); //Desliga o LED do pino 7   

digitalWrite
(C_1, LOW); //Desliga o LED do pino 8   
digitalWrite(C_2, LOW); //Desliga o LED do pino 9   
digitalWrite
(C_3, LOW); //Desliga o LED do pino 10

}

void loop()
{   

embaralha(); //Vai para a função para efeito de embaralhando   

if (!digitalRead(CHAVE)) //Se algo for digitado na Serial   
{     
sorteio = random(1,7); //Sorteia um número de 1 a 6     

if
(sorteio == 1) //Se o número sortero for 1     
{       
um(); //Vai para a função que desenha o 1 no dado     
}     
else
if(sorteio == 2) //Senão se o número sorteado for 2     
{       
dois(); //Vai para a função que desenha o 2 no dado     
}     
else
if(sorteio == 3) //Senão se o número sorteado for 3     
{       
tres();  //Vai para a função que desenha o 3 no dado     
}     
else
if(sorteio == 4) //Senão se o número sorteado for 4     
{       
quatro();  //Vai para a função que desenha o 4 no dado     
}     
else if(sorteio == 5) //Senão se o número sorteado for 5     
{       
cinco();  //Vai para a função que desenha o 5 no dado     
}     
else
if(sorteio == 6) //Senão se o número sorteado for 6     
{       
seis();  //Vai para a função que desenha o 6 no dado     
}   



}

void
um() //Função que desenha o 1 no no dado
{      

apaga(); //Vai para a função que limpa o dado  
digitalWrite(B_2, HIGH); //Acende o LED do pino 6   
delay
(3000); //Aguarda 3 segundos   

}

void
dois() //Função que desenha o 2 no no dado
{      

apaga(); //Vai para a função que limpa o dado   
digitalWrite(A_1, HIGH); //Acende o LED do pino 2   
digitalWrite
(C_3, HIGH); //Acende o LED do pino 10   
delay
(3000); //Aguarda 3 segundos   

}

void
tres() //Função que desenha o 3 no no dado
{     
 
apaga(); //Vai para a função que limpa o dado   
digitalWrite
(A_1, HIGH); //Acende o LED do pino 2   
digitalWrite(B_2, HIGH); //Acende o LED do pino 6  
 digitalWrite(C_3, HIGH); //Acende o LED do pino 10   
delay
(3000); //Aguarda 3 segundos   

}

void
quatro() //Função que desenha o 4 no no dado
{
     
apaga(); //Vai para a função que limpa o dado   
digitalWrite
(A_1, HIGH); //Acende o LED do pino 2   
digitalWrite
(A_3, HIGH); //Acende o LED do pino 4   
digitalWrite
(C_1, HIGH); //Acende o LED do pino 8   
digitalWrite
(C_3, HIGH); //Acende o LED do pino 10   
delay
(3000); //Aguarda 3 segundos

}

void
cinco() //Função que desenha o 5 no no dado
{
    
apaga(); //Vai para a função que limpa o dado   
digitalWrite(A_1, HIGH); //Acende o LED do pino 2   
digitalWrite
(A_3, HIGH); //Acende o LED do pino 4   
digitalWrite
(B_2, HIGH); //Acende o LED do pino 5   
digitalWrite
(C_1, HIGH); //Acende o LED do pino 8   
digitalWrite
(C_3, HIGH); //Acende o LED do pino 10   
delay(3000); //Aguarda 3 segundos   

}

void seis() //Função que desenha o 6 no no dado
{     

apaga(); //Vai para a função que limpa o dado   
digitalWrite(A_1, HIGH); //Acende o LED do pino 2   
digitalWrite
(A_2, HIGH); //Acende o LED do pino 3   
digitalWrite
(A_3, HIGH); //Acende o LED do pino 4   
digitalWrite
(C_1, HIGH); //Acende o LED do pino 8   
digitalWrite
(C_2, HIGH); //Acende o LED do pino 9   
digitalWrite
(C_3, HIGH); //Acende o LED do pino 11   
delay
(3000); //Aguarda 3 segundos   

}

void apaga() //Função para desliga todos os LED do dado
{     

digitalWrite(A_1, LOW); //Desliga o LED do pino 2  
digitalWrite(A_2, LOW); //Desliga o LED do pino 3   
digitalWrite
(A_3, LOW); //Desliga o LED do pino 4   

digitalWrite
(B_1, LOW); //Desliga o LED do pino 5   
digitalWrite
(B_2, LOW); //Desliga o LED do pino 6   
digitalWrite
(B_3, LOW); //Desliga o LED do pino 7   

digitalWrite(C_1, LOW); //Desliga o LED do pino 8   
digitalWrite
(C_2, LOW); //Desliga o LED do pino 9   
digitalWrite
(C_3, LOW); //Desliga o LED do pino 10   

}

void
embaralha() //Função para efeito de embaralhamento
{     

digitalWrite(C_3, LOW); //Desliga o LED do pino 10   
digitalWrite
(A_1, HIGH); //Acende o LED do pino 2   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(A_1, LOW); //Desliga o LED do pino 2   
digitalWrite
(A_2, HIGH); //Acende o LED do pino 3   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(A_2, LOW); //Desliga o LED do pino 3   
digitalWrite(A_3, HIGH); //Acende o LED do pino 4   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite
(A_3, LOW); //Desliga o LED do pino 4   
digitalWrite
(B_1, HIGH); //Acende o LED do pino 5   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(B_1, LOW); //Desliga o LED do pino 5   
digitalWrite
(B_2, HIGH); //Acende o LED do pino 6   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite
(B_2, LOW); //Desliga o LED do pino 6   
digitalWrite
(B_3, HIGH); //Acende o LED do pino 7   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(B_3, LOW); //Desliga o LED do pino 7   
digitalWrite
(C_1, HIGH); //Acende o LED do pino 8   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(C_1, LOW); //Desliga o LED do pino 8   
digitalWrite
(C_2, HIGH); //Acende o LED do pino 9   
delay
(10); //Aguarda 10 milissegundos   

digitalWrite(C_2, LOW); //Desliga o LED do pino 9   
digitalWrite
(C_3, HIGH); //Acende o LED do pino 10   
delay
(10); //Aguarda 10 milissegundos   

}