Índice:
- Etapa 1: instruções de conexão
- Passo 2:
- Etapa 3:
- Passo 4:
- Etapa 5:
- Etapa 6:
- Etapa 7:
- Etapa 8:
- Etapa 9: Instruções de programação
- Etapa 10:
- Etapa 11:
- Etapa 12:
- Etapa 13:
- Etapa 14:
Vídeo: Projeto Despertador Arduino: 14 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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
1. Conecte um fio jumper do pino de 5 V no Arduino a um dos trilhos + na placa de ensaio.
Passo 2:
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:
3. Conecte a tela LCD à alimentação, aterramento e o pino TX (pino 1).
Passo 4:
4. Coloque 7 botões na placa de ensaio com as pernas cruzando a lacuna na placa de ensaio.
Etapa 5:
5. Coloque resistores de 10 kohm do trilho - com o pino GND conectado a ele nos pinos inferiores esquerdos dos botões.
Etapa 6:
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:
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:
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:
Despertador inteligente usando Magicbit (Arduino): 10 etapas
Despertador inteligente usando Magicbit (Arduino): Este tutorial mostra como fazer um despertador inteligente usando display OLED na placa de desenvolvimento de Magicbit sem usar qualquer módulo RTC
Despertador Arduino com sensor de temperatura: 5 etapas
Despertador Arduino com sensor de temperatura: Arduino é um microcontrolador muito fácil e barato. e variam fácil de controlar. Então, o que você vai esperar neste projeto … nós usaremos RTC para configurações de timealarm precisas que são altas o suficiente para acordar a temperatura de sua sala se você quiser assistir a um vídeo, clique
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: 10 etapas (com imagens)
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: Você sempre quis um relógio inteligente? Se sim, esta é a solução para você! Fiz o Smart Alarm Clock, é um relógio que você pode alterar a hora do alarme de acordo com o site. Quando o alarme disparar, haverá um som (campainha) e 2 luzes
Despertador Binário DIY Arduino: 14 etapas (com imagens)
DIY Arduino Binary Alarm Clock: É o relógio binário clássico de novo! Mas desta vez com ainda mais funções adicionais! Neste instrutível, mostrarei como construir um despertador binário com Arduino que pode mostrar não apenas a hora, mas a data, o mês, mesmo com temporizador e alarme divertido
Gravador alimentado por USB! Este projeto pode queimar plásticos / madeira / papel (o projeto divertido também deve ser uma madeira muito fina): 3 etapas
Gravador alimentado por USB! Este projeto pode queimar através de plástico / madeira / papel (projeto divertido também deve ser madeira muito fina): NÃO FAÇA ISSO USANDO USB !!!! Eu descobri que isso pode danificar seu computador com todos os comentários. meu computador está bem tho. Use um carregador de telefone 600ma 5v. Eu usei isso e funciona bem e nada pode ser danificado se você usar um plugue de segurança para interromper a alimentação