Tabla de contenido:

Proyecto Arduino Alarm Clock: 14 pasos
Proyecto Arduino Alarm Clock: 14 pasos

Video: Proyecto Arduino Alarm Clock: 14 pasos

Video: Proyecto Arduino Alarm Clock: 14 pasos
Video: Digital Clock Using Arduino ||TINKERCAD 2024, Noviembre
Anonim
Proyecto Arduino Alarm Clock
Proyecto Arduino Alarm Clock

En este proyecto, usaremos el Arduino Uno para controlar una pantalla LCD para mostrar la hora actual y la hora a la que está configurada una alarma. Usaremos botones para configurar cada vez.

Materiales:

  • Arduino Uno -
  • Protoboard:
  • Cables de puente (x13 +) -
  • Resistencias de 10 kohm (x4) -
  • Pantalla LCD -
  • 7 botones -
  • Altavoz piezoeléctrico:

Paso 1: Instrucciones de conexión

Instrucciones de conexión
Instrucciones de conexión

1. Conecte un cable de puente desde el pin de 5V en el Arduino a uno de los rieles + en la placa de pruebas.

Paso 2:

Imagen
Imagen

2. Conecte un cable de puente desde el pin GND en el Arduino al riel - al lado del riel + que eligió en la placa de pruebas.

Paso 3:

Imagen
Imagen

3. Conecte la pantalla LCD a la alimentación, tierra y el pin TX (pin 1).

Paso 4:

Imagen
Imagen

4. Coloque 7 botones en la placa de pruebas con las patas a través del espacio en la placa de pruebas.

Paso 5:

Imagen
Imagen

5. Coloque resistencias de 10 kohm del riel - con el pin GND conectado a los pines inferiores izquierdos de los botones.

Paso 6:

Imagen
Imagen

6. Coloque cables de puente entre la clavija inferior derecha de los botones y el riel de 5V en su tablero.

Paso 7:

Imagen
Imagen

7. Coloque los cables de puente entre las clavijas 6, luego 8-13 y la clavija del botón al que está conectada la resistencia.

Paso 8:

Imagen
Imagen

8. A continuación, coloque su altavoz piezoeléctrico en la placa de pruebas y conecte el pin 7 al pin de alimentación, luego una resistencia de 100 ohmios a tierra.

Paso 9: instrucciones de programación

1. Descripción general: Este proyecto le pedirá al usuario que configure la hora actual en el encendido inicial en la pantalla, la hora actual y la hora para la que está configurada la alarma. Los botones conectados arriba se usarán para configurar cada vez. De izquierda a derecha, se configuran la hora actual, configuran los minutos actuales, configuran AM o PM actuales, configuran la hora de la alarma, configuran los minutos de la alarma, configuran la alarma AM o PM. El último botón se usa para silenciar la alarma cuando suena.

Paso 10:

2. Lo primero que debemos hacer es inicializar nuestra variable que vamos a usar.

// Inicializar las variables que se utilizarán en la hora = 0; // Hora para la hora actual int minuto = 0; //

Minuto para la hora actual int segundo = 0; // Segundo para la hora actual

int hora_a = 0; int // Hora para la hora de la alarma

minuto_a = 0; // Minuto para la hora de la alarma

bool am_pm = falso; // Bandera de alternancia AM / PM. Falso es AM, verdadero es PM

bool am_pm_a = falso; // Bandera de alternancia AM / PM para alarma. Falso es AM, verdadero es PM

int set_hr = 13; // Use el pin 13 para configurar la hora

int set_min = 12; // Use el pin 12 para configurar el minuto int

set_am_pm = 11; // Use el pin 11 para configurar am / pm

int set_hr_a = 10; // Use el pin 10 para configurar la hora de la alarma int set_min_a = 9; // Use el pin 9 para establecer los minutos de la alarma int set_am_pm_a = 8; // Use el pin 8 para configurar am / pm para alarma

int altavoz = 7; // Pin a utilizar para speakerint quiet = 6; // Pin para detener el altavoz

bool alarma = falso; // Marcar para alternar para seguir siendo alarmante

bool silencioso = falso; // La bandera que muestra silencio no ha sido presionada

int cur_time = 0; // Variable para la hora actual

int etime = 0; // Variable por tiempo transcurrido

Paso 11:

3. A continuación, debemos configurar la pantalla LCD y decirle al usuario que configure la hora actual. Dado que esto solo debe hacerse una vez, lo haremos en la rutina de configuración.

configuración vacía () {

// Configurar la pantalla LCD

Serial.begin (9600); // Inicializar serial a 9600 baudios

Serial.write (17); // Enciende la luz de fondo

Serial.write (24); // Enciende la pantalla, con cursor y sin parpadeo

Serial.write (12); // Limpiar la pantalla

Serial.write (128); // Mover el cursor a la esquina superior izquierda // Establecer pinModes pinMode (set_hr, APORTE); pinMode (set_min, ENTRADA);

pinMode (set_am_pm, ENTRADA);

pinMode (set_hr_a, ENTRADA);

pinMode (set_min_a, ENTRADA);

pinMode (set_am_pm_a, ENTRADA);

pinMode (altavoz, SALIDA);

pinMode (silencioso, ENTRADA);

// En el encendido inicial, haga que el usuario establezca la hora actual. Serial.print ("Establecer la hora actual"); retraso (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Almacenar la hora actual}

Paso 12:

4. Luego, en la rutina de bucle, hacemos un seguimiento del tiempo y leemos el estado del botón para ver si el usuario está configurando alguno de los tiempos.

bucle vacío () {

// Mantén el tiempo

Mantén el tiempo();

// ¡Comprueba si es hora de alarmar!

if ((hora == hora_a && minuto == minuto_a &&! silenciado) || alarma) {tono (altavoz, 2000, 500); // Emite un sonido de 2000 Hz al altavoz durante 500 ms

retraso (500); // Retraso 500 ms si (! Alarma) {// Si la alarma está apagada, enciéndala

}

}

// Si el usuario silencia la alarma presionando el botón silencioso, deje de alarmar si (alarma &&! Silenciado && digitalRead (silencioso)) {

alarma = falso;

tranquilo = verdadero; }

// Reinicia la alarma si (! Alarma && silenciada && minuto! = Minuto_a) {silenciada = falso;

}

// Verifique si los pines establecidos son altos, y si es así, incremente el valor correspondiente si (digitalRead (set_hr) && hour <12) {

hora ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

demás{}

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

minuto ++; printTimes ();

debounce ();

}

si no (digitalRead (set_min) && minuto == 59) {minuto = 0;

printTimes ();

debounce ();

}

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

am_pm = falso;

printTimes ();

debounce ();

}

si no (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

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

hour_a ++;

printTimes ();

debounce ();

}

si no (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 ();

}

si no (digitalRead (set_min) && minuto_a == 59) {minuto_a = 0;

printTimes ();

debounce ();

}

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

am_pm_a = falso;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

demás{}

}

Paso 13:

5. Aquí, notará un par de subrutinas que creé: debounce () y printTimes (). Debounce () se usa para asegurarnos de que solo leemos los botones una vez. Dado que Arduino escanea miles de veces por segundo, puede pensar que el botón se presionó varias veces cuando solo tenía la intención de que se lea una vez. Debounce () congelará el programa hasta que se suelte el botón. printTimes () actualiza la pantalla LCD, pero como eran varios comandos, los escribí una vez y luego puedo llamar a la subrutina cada vez que cambia un valor de tiempo.

// Mientras se presiona cualquiera de los botones, permanezca en esta función y luego demore 250 ms.

rebote vacío () {

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

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

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} retraso (250);

}

// Imprime los tiempos actualizados si hay algún cambio

void printTimes () {

Serial.write (12);

Serial.print ("Hora actual:");

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 (":");

si (segundo <10) {

Serial.print ("0");

}

Serial.print (segundo);

if (am_pm) {

Serial.print ("PM");

}

demás{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarma configurada para:");

Serial.write (188);

si (hora_a <10) {

Serial.print ("0");

}

Serial.print (hora_a);

Serial.print (":");

si (minuto_a <10) {

Serial.print ("0");

}

Serial.print (minuto_a);

if (am_pm_a) {

Serial.print ("PM");

}

demás{

Serial.print ("AM");

}

}

// Incrementar los parámetros de tiempo void

Mantén el tiempo(){

etime = millis () - cur_time;

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

segundo ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && second == 59 && minute <59) {second = 0;

minuto ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

segundo = 0; minuto =

0; hora ++; cur_time =

millis (); printTimes ();

}

else if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

segundo = 0; minuto =

0; hora = 1; am_pm =

!am PM;

cur_time = millis ();

printTimes ();

}

demás{}

}

Paso 14:

6. ¡Eso es todo!

¡Compila y carga y listo!

Recomendado: