Cómo mostrar la hora para su proyecto de reloj arduino

Video: Arduino UNO - RTC Reloj de Tiempo Real

Una vez que tenga algo en la pantalla para su Proyecto de reloj Arduino, es el momento de leer la hora del módulo RTC y mostrarlo. Más tarde, se agrega botones para programar la alarma, y ​​un interruptor para cambiar entre el tiempo de visualización, sistema de alarma, y ​​los modos de alarma Armadas.

En realidad, hay sólo dos cosas que se pueden mostrar con este reloj: ya sea la hora actual o el tiempo que desea que la alarma se apaga. En lugar de incluir el código para ambos en la principal lazo(), que tiene sentido para poner el procedimiento de visualización en su propia función.

Agregue el código siguiente a la sección de declaraciones de variable en la parte superior de su código:

RTC_DS1307 rtc- // Crear un reloj de tiempo real llamado lcd rtcLiquidCrystal (12, 11, 5, 4, 3, 2) - // Crear un LCD llamado lcdDateTime ahora-

Esto crea un objeto DateTime llamada ahora. El objeto DateTime es parte de la biblioteca de RTC y es la única manera de conseguir el tiempo de espera del módulo RTC, a pesar de que tiene una gran cantidad de opciones y puede proporcionar horas, minutos, segundos, y el año, mes y día.

Video: Robot reloj, escribe la hora como se hace Tutorial

A continuación, agregue el código en su bucle principal que lee la hora actual del módulo RTC, y agregar una función para actualizar la pantalla con la hora actual:

void loop () {Ahora rtc.now = () - // Obtener la hora actual // Actualiza la displayupdateDisplay () -}

los ahora objeto DateTime almacena la hora actual tomada desde el rtc.now () función para mostrar la hora y comprobar si es el momento de disparar la alarma.

Para mantener el código modular, la actualización de la pantalla se realiza en su propia función, fuera del bucle principal. Después de cerrar el bucle principal, añadir el updateDisplay () función introduciendo el código siguiente:

anular updateDisplay () {int h = ahora.hora () - // Obtener las horas en este momento y almacenarlos en un número entero llamado indicio m = now.minute () - // Obtener los minutos ahora mismo y almacenarlos en un número entero llamada menta s = now.second () - // Obtener los segundos en este momento y almacenarlos en un entero llamado slcd.setCursor (0, 0) - // Establecer el cursor en la columna cero, fila superior ... lcd. impresión(" La hora es: ") - // ... con espacios para borrar los caracteres de la configuración alarm.lcd.setCursor (4, 1) - // Mover el cursor a la columna cuatro, menor rowif (HLT; 10) {// Se añade un cero, si es necesario , como abovelcd.print (0) -} lcd.print (h) - // Mostrar el hourlcd.setCursor de corriente (6, 1) - // Mover a la siguiente columnlcd.print (":") - // e imprimir el colonlcd.setCursor (7, 1) - // Mover a la siguiente columnif (MLT; 10) {// Se añade un cero, si es necesario, como abovelcd.print (0) -} lcd.print (m) - // Mostrar la corriente minutelcd.setCursor (9, 1) - // Mover a la siguiente columnlcd.print (":") - // e imprimir el colonlcd.setCursor (10, 1) - // Mover a la siguiente columnif (SLT; 10) {// Se añade un cero, si es necesario, como abovelcd.print (0) -} lcd.print (s) - // muestra la segunda corriente}

Enviar este código a su Arduino y ver qué pasa. Si todo está bien y su código se compila correctamente, debería estar en el negocio! La pantalla debe mostrar un momento que coincide con el de su equipo.

En el código, la hora actual se solicita desde el ahora objetar y colocado en tres variables enteras utilizadas sólo en el updateDisplay función. Estas variables tienen una ámbito local, lo que significa que sólo se pueden utilizar dentro de updateDisplay (), y el resto del programa no sabe nada acerca de ellos - lo que explica que no se declaran al comienzo de su código.

Usted solicita minutos de tiempo, horas y segundos por separado con now.hours (), now.minutes (), y now.seconds (). Asignación de cada uno de estos por separado a su propia variable entero (h, m, y s) es mucho más fácil que solicita el tiempo actual a la vez.

Video: Robot Reloj, como se Programa y Calibra (Tutorial)

Después de haber analizado el tiempo en tres variables, lo principal que pasa en updateDisplay () se está posicionando el cursor en la pantalla LCD e imprimir el texto en cuestión. Posicionar el cursor se realiza con lcd.setCursor (), que toma dos parámetros: número de columna y número de línea. Ajuste el cursor sólo se pone en la posición correcta.

A continuación, tiene que contar lo que la pantalla para imprimir. La numeración comienza en cero, por lo que el carácter superior más a la izquierda está en la columna 0 y la fila 0. El cursor se sitúa en la parte superior izquierda de la pantalla y la primera línea de texto se imprime con lcd.print ( “El tiempo es:”).

Video: Arduino: Cómo hacer un reloj despertador (parte 2) | TechKrowd

Se podría utilizar el lcd.clear () función, que borra todo el texto en toda la pantalla. Sin embargo, el reloj es refrescante constantemente la pantalla, por lo que la limpieza de la pantalla cada vez que el updateDisplay () ejecuta la función se pueden introducir sólo un poco de parpadeo perceptible. Un enfoque más sencillo (que utiliza uno menos de instrucciones) es sólo para escribir los caracteres de espacio más de lo que podría haber sido ya en la pantalla.

A continuación, el cursor se mueve cuatro espacios hacia la derecha y en la segunda fila, por lo que el tiempo está centrada en la pantalla:

lcd.setCursor (4,1) -

Un poco complicado sobre el uso de números enteros para obtener las horas, minutos y segundos, es que no tienen un cero para valores inferiores a 10. Es necesario añadir los de forma manual, tanto para hacer el reloj se ve bien (por ejemplo, 01 : 05) y para mantener las horas minutos y segundos en el mismo lugar en la pantalla.

Adición de los ceros de cabeza se lleva a cabo de la misma manera para horas, minutos y segundos:

si (hlt; 10) {// Añadir un cero, si es necesario, como abovelcd.print (0) -} lcd.print (h) - // Mostrar la hora actual

el condicional Si pruebas de declaración de si la hora actual es inferior a 10, y si es así, la impresión() declaración imprime un cero. Después de esto, la pantalla avanza automáticamente a la siguiente posición de la columna, por lo que cuando se imprime la hora actual, almacenado en la variable de número entero marido, que tendrá un cero que conduce. Lo mismo vale para los minutos y segundos.

También debe avanzar el cursor a la posición correcta para el cero para los minutos y segundos. Insertar una coma entre ellas con el lcd.print ( “:”) - declaración.

Artículos Relacionados