Despertador Por Configuração Binária

Com este exemplo você montará um despertador com seu arduino, onde o mesmo é configurado via os jumpers e a partir do tempo ajustado por código binário, ele fará uma contagem regressiva e ao terminar essa contagem apitará o buzzer até a chave táctil ser pressionada.

Dificuldade:

Montagem:

Programação:


Material Utilizado:

Arduino Uno

Cabo USB A para B

Protoboard 830

Resistor 10kΩ

Chave Tactil

Buzzer

Alguns Jumpers

A Montagem

O Sketch

 

#define buzzer A0 //Define buzzer como A0
#define botao 7 //Define botao como A5
#define M0 13 //Define M0 como 13
#define M1 12 //Define M1 como 12
#define M2 11 //Define M2 como 11
#define M3 10 //Define M3 como 10
#define M4 9  //Define M4 como 9
#define M5 8  //Define M5 como 8
#define H0 6 //Define H0 como 6
#define H1 5 //Define H1 como 5
#define H2 4 //Define H2 como 4
#define H3 3 //Define H3 como 3
#define H4 2 //Define H4 como 2

int
j,k; //Variáveis para contagem

int
minuto=0; //Variável para armazenar os minutos
int
hora=0; //Variável para armazenar as horas

void
setup()
{   

pinMode(M0,INPUT); //Configura o pino D13 como entrada   
pinMode
(M1,INPUT); //Configura o pino D12 como entrada   
pinMode
(M2,INPUT); //Configura o pino D11 como entrada   
pinMode
(M3,INPUT); //Configura o pino D10 como entrada   
pinMode(M4,INPUT); //Configura o pino D9 como entrada   
pinMode(M5,INPUT); //Configura o pino D8 como entrada   

pinMode
(H0,INPUT); //Configura o pino D6 como entrada   
pinMode
(H1,INPUT); //Configura o pino D5 como entrada   
pinMode
(H2,INPUT); //Configura o pino D4 como entrada   
pinMode(H3,INPUT); //Configura o pino D3 como entrada   
pinMode
(H4,INPUT); //Configura o pino D2 como entrada   

pinMode
(botao, INPUT_PULLUP); //Configura o pino A5 como entrada   

if
(digitalRead(M0)) //Se o pino D13 estiver em nível lógico alto   
{     
minuto += 1; //Soma 1 aos minutos   
}      

if
(digitalRead(M1)) //Se o pino D12 estiver em nível lógico alto   
{     
minuto += 2; //Soma 2 aos minuntos   
}      

if(digitalRead(M2)) //Se o pino D11 estiver em nível lógico alto   
{     
minuto += 4; //Soma 4 aos minuntos   
}      

if(digitalRead(M3)) //Se o pino D10 estiver em nível lógico alto   
{     
minuto += 8; //Soma 8 aos minuntos   
}      

if
(digitalRead(M4)) //Se o pino D9 estiver em nível lógico alto   
{     
minuto += 16; //Soma 16 aos minuntos   
}      

if
(digitalRead(M5)) //Se o pino D8 estiver em nível lógico alto   
{     
minuto += 32; //Soma 32 aos minuntos   
}   

if(digitalRead(H0)) //Se o pino D6 estiver em nível lógico alto   
{     
hora += 1; //Soma 1 as horas   
}      

if
(digitalRead(H1)) //Se o pino D5 estiver em nível lógico alto   
{     
hora += 2; //Soma 2 as horas   
}      

if(digitalRead(H2)) //Se o pino D4 estiver em nível lógico alto   
{     
hora += 4; //Soma 4 as horas   
}      

if
(digitalRead(H3)) //Se o pino D3 estiver em nível lógico alto   
{     
hora += 8; //Soma 8 as horas   
}      

if(digitalRead(H4)) //Se o pino D2 estiver em nível lógico alto   
{     
hora += 16; //Soma 16 as horas   
}    

if(hora > 0) minuto = minuto + (hora*60); //Se a hora for maior que 0,   //multiplica por 60 para transformar em minutos e soma com a quantidade...   //de minutos.

}

void loop()
{      

//Laço para a contagem dos minutos   
for(j=minuto ; j > 0 ; j--) //Conta o tempo definido pelos jumpers   
{     

//Laço para contagem dos segundos     
for
(k=0 ; k < 60 ; k++) //Conta 60 segundos     
{      

delay(1000); //Aguarda 1 segundo     
}     
//==============================   

}   
//================================   

//Enquanto o botão não for pressionado   
while(digitalRead(botao))   
{     
tone(buzzer,500,500); //Toca o buzzer     
delay
(1000); //Aguarda 1 segundo   
}   
//====================================
  

asm volatile (" jmp 0 "); //Reinicia a programação do Arduino

}