Índice:

Projeto Despertador Arduino: 14 etapas
Projeto Despertador Arduino: 14 etapas

Vídeo: Projeto Despertador Arduino: 14 etapas

Vídeo: Projeto Despertador Arduino: 14 etapas
Vídeo: RELÓGIO DESPERTADOR COM ARDUINO | Projeto do Assinante #016 2024, Julho
Anonim
Projeto Despertador Arduino
Projeto Despertador Arduino

Neste projeto, usaremos o Arduino Uno para controlar uma tela LCD para mostrar a hora atual e a hora para a qual um alarme está definido. Usaremos botões para definir cada vez.

Materiais:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13 +) -
  • Resistores de 10 kohm (x4) -
  • Tela LCD -
  • 7 botões -
  • Palestrante Piezo -

Etapa 1: instruções de conexão

Instruções de conexão
Instruções de conexão

1. Conecte um fio jumper do pino de 5 V no Arduino a um dos trilhos + na placa de ensaio.

Passo 2:

Imagem
Imagem

2. Conecte um fio jumper do pino GND no Arduino ao trilho - próximo ao trilho + que você escolheu na placa de ensaio.

Etapa 3:

Imagem
Imagem

3. Conecte a tela LCD à alimentação, aterramento e o pino TX (pino 1).

Passo 4:

Imagem
Imagem

4. Coloque 7 botões na placa de ensaio com as pernas cruzando a lacuna na placa de ensaio.

Etapa 5:

Imagem
Imagem

5. Coloque resistores de 10 kohm do trilho - com o pino GND conectado a ele nos pinos inferiores esquerdos dos botões.

Etapa 6:

Imagem
Imagem

6. Coloque os fios de jumper entre o pino inferior direito dos botões e o trilho de 5 V em sua placa de ensaio.

Etapa 7:

Imagem
Imagem

7. Coloque os fios do jumper entre os pinos 6, 8-13 e o pino no botão ao qual o resistor está conectado.

Etapa 8:

Imagem
Imagem

8. Em seguida, coloque o alto-falante Piezo na placa de ensaio e conecte o pino 7 ao pino de alimentação e, em seguida, um resistor de 100 ohms ao aterramento.

Etapa 9: Instruções de programação

1. Visão geral: Este projeto pedirá ao usuário para definir a hora atual na alimentação inicial no display a hora atual e a hora para a qual o alarme está definido. Os botões conectados acima serão usados para definir cada vez. Da esquerda para a direita, eles são definidos a hora atual, definir o minuto atual, definir AM ou PM atual, definir a hora do alarme, definir os minutos do alarme, definir o alarme AM ou PM. O último botão é usado para silenciar o alarme quando estiver soando.

Etapa 10:

2. A primeira coisa que precisamos fazer é inicializar nossa variável que vamos usar.

// Inicializa as variáveis a serem usadasint hora = 0; // Hora da hora atual int minuto = 0; //

Minuto para a hora atual int segundo = 0; // Segundo para a hora atual

int hora_a = 0; int // Hora para a hora do alarme

minuto_a = 0; // Minuto para a hora do alarme

bool am_pm = false; // Sinalizador de alternância AM / PM. False é AM, True é PM

bool am_pm_a = false; // Sinalizador de alternância AM / PM para alarme. False é AM, True é PM

int set_hr = 13; // Use o pino 13 para definir a hora

int set_min = 12; // Use o pino 12 para definir o minuto interno

set_am_pm = 11; // Use o pino 11 para definir am / pm

int set_hr_a = 10; // Use o pino 10 para definir a hora do alarme int set_min_a = 9; // Use o pino 9 para definir os minutos do alarme int set_am_pm_a = 8; // Use o pino 8 para definir am / pm para o alarme

alto-falante interno = 7; // Pino a ser usado para speakerint quiet = 6; // Fixar para parar o alto-falante

alarme bool = falso; // Sinalize para alternar para manter o alarme

bool quieted = false; // Sinalizador mostrando silêncio não foi pressionado

int cur_time = 0; // Variável para a hora atual

int etime = 0; // Variável para o tempo decorrido

Etapa 11:

3. Em seguida, precisamos configurar a tela LCD e dizer ao usuário para configurar a hora atual. Como isso só precisa ser feito uma vez, faremos na rotina de configuração.

void setup () {

// Configurar tela LCD

Serial.begin (9600); // Inicializar serial em 9600 baud

Serial.write (17); // Ligue a luz de fundo

Serial.write (24); // Liga a tela, com o cursor e sem piscar

Serial.write (12); // Limpar a tela

Serial.write (128); // Mova o cursor para o canto superior esquerdo // Defina pinModes pinMode (set_hr, ENTRADA); pinMode (set_min, INPUT);

pinMode (set_am_pm, INPUT);

pinMode (set_hr_a, INPUT);

pinMode (set_min_a, INPUT);

pinMode (set_am_pm_a, INPUT);

pinMode (alto-falante, OUTPUT);

pinMode (silencioso, INPUT);

// Na alimentação inicial, o usuário deve definir a hora atual. Serial.print ("Definir a hora atual"); atraso (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Armazena a hora atual}

Etapa 12:

4. Então, na rotina de loop, mantemos o controle do tempo e lemos o status do botão para ver se o usuário está configurando algum dos tempos.

void loop () {

// Tenha paciência

tenha paciência();

// Verifique se é hora de alarmar!

if ((hora == hora_a && minuto == minuto_a &&! silencioso) || alarme) {tom (alto-falante, 2000, 500); // Emita um som de 2000 Hz para o alto-falante por 500 ms

atraso (500); // Atrasar 500 ms if (! Alarm) {// Se o alarme estiver desligado, ligue-o

}

}

// Se o usuário silenciar o alarme pressionando o botão silencioso, pare o alarme se (alarme &&! Silenciou && digitalRead (silencioso)) {

alarme = falso;

quieted = true; }

// Reinicia o alarme if (! Alarm && silencioso && minuto! = Minuto_a) {quieted = false;

}

// Verifique se os pinos definidos estão altos e, em caso afirmativo, aumente o valor correspondente se (digitalRead (set_hr) && hora <12) {

hora ++;

printTimes ();

debounce ();

}

else if (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

debounce ();

}

outro{}

if (digitalRead (set_min) && minuto <59) {

minuto ++; printTimes ();

debounce ();

}

senão if (digitalRead (set_min) && minuto == 59) {minuto = 0;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = falso;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

else {} if (digitalRead (set_hr_a) && hour_a <12) {

hour_a ++;

printTimes ();

debounce ();

}

else if (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_min_a) && minute_a <59) {

minuto_a ++;

printTimes ();

debounce ();

}

else if (digitalRead (definir_min) && minuto_a == 59) {minuto_a = 0;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = false;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

outro{}

}

Etapa 13:

5. Aqui, você notará algumas sub-rotinas que criei - debounce () e printTimes (). Debounce () é usado para garantir que lemos os botões apenas uma vez. Como o Arduino verifica milhares de vezes por segundo, ele pode pensar que o botão foi pressionado várias vezes quando você pretendia que fosse lido apenas uma vez. Debounce () irá congelar o programa até que o botão seja liberado. printTimes () atualiza a tela LCD, mas como eram vários comandos, eu os digitei uma vez e então posso chamar a sub-rotina a qualquer momento que um valor de tempo mudar.

// Enquanto qualquer um dos botões estiver sendo pressionado, permaneça nesta função e retarde 250 ms.

void debounce () {

while (digitalRead (set_hr) || digitalRead (set_min) ||

digitalRead (set_am_pm) || digitalRead (set_hr_a) ||

digitalRead (set_min_a) || digitalRead (definir_am_pm_a)) {} atraso (250);

}

// Imprime os tempos atualizados se houver alguma mudança

void printTimes () {

Serial.write (12);

Serial.print ("Hora Atual:");

Serial.write (148);

if (hora <10) {

Serial.print ("0");

}

Serial.print (hora);

Serial.print (":");

if (minuto <10) {

Serial.print ("0");

}

Serial.print (minuto); Serial.print (":");

if (segundo <10) {

Serial.print ("0");

}

Serial.print (segundo);

if (am_pm) {

Serial.print ("PM");

}

outro{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarme definido para:");

Serial.write (188);

if (hora_a <10) {

Serial.print ("0");

}

Serial.print (hora_a);

Serial.print (":");

if (minuto_a <10) {

Serial.print ("0");

}

Serial.print (minuto_a);

if (am_pm_a) {

Serial.print ("PM");

}

outro{

Serial.print ("AM");

}

}

// Incrementa os parâmetros de tempo void

tenha paciência(){

etime = millis () - cur_time;

if (etime> = 1000 && segundo <59) {

segundo ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && segundo == 59 && minuto <59) {segundo = 0;

minuto ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && segundo == 59 && minuto == 59 && hora <12) {

segundo = 0; minuto =

0; hora ++; cur_time =

millis (); printTimes ();

}

else if (etime> = 1000 && segundo == 59 && minuto == 59 && hora == 12) {

segundo = 0; minuto =

0; hora = 1; am_pm =

!manhã tarde;

cur_time = millis ();

printTimes ();

}

outro{}

}

Etapa 14:

6. É isso!

Compile, faça upload e pronto!

Recomendado: