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:
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
}