Cómo mostrar la hora para su proyecto reloj arduino
Una vez que tienes algo en la pantalla para su Project Clock 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 pantalla Tiempo, Set de alarma, y los modos Armadas de alarma.
En realidad, hay sólo dos cosas que usted puede 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 poner el procedimiento de visualización en su propia función.
Agregue el código siguiente a la sección de declaraciones de variables en la parte superior de su código:
RTC_DS1307 rtc- // Crear un reloj en tiempo real llamado rtcLiquidCrystal lcd (12, 11, 5, 4, 3, 2) - // Crear una lcdDateTime LCD llama ahora-
Esto crea un objeto DateTime llamado 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 un montón de opciones y puede proporcionar horas, minutos, segundos, y el año, mes y día.
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 del rtc.now () función para visualizar el tiempo y para comprobar si es el momento de activar la alarma.
Para mantener el código modular, la actualización de la pantalla se hace en su propia función, fuera del bucle principal. Después de cerrar el bucle principal, agregue el UpdateDisplay () función introduciendo el siguiente código:
anular UpdateDisplay () {int h = ahora.hora () - // Obtener las horas en este momento y almacenarlas en un entero llamado toque m = now.minute () - // Obtener los minutos en este momento y almacenarlas en un entero llamada menta s = now.second () - // Obtener los segundos en este momento y almacenarlas en un entero llamado slcd.setCursor (0, 0) - // Establecer el cursor en la columna cero, fila superior ... lcd. print ("El tiempo es:") - // ... con espacios para borrar los caracteres de la creación alarm.lcd.setCursor (4, 1) - // Mover el cursor a la columna cuatro, rowif inferior (HLT; 10) { // Añadir un cero, si es necesario, como abovelcd.print (0) -} lcd.print (h) - // Visualizar el hourlcd.setCursor actual (6, 1) - // Mover a la siguiente columnlcd.print (" : ") - // Y imprimir la colonlcd.setCursor (7, 1) - // Mover a la siguiente columnif (mlt; 10) {// Añadir un cero, si es necesario, como abovelcd.print (0) -} lcd .print (m) - // Muestra la corriente minutelcd.setCursor (9, 1) - // Mover a la siguiente columnlcd.print (":") - // e imprimir el colonlcd.setCursor (10, 1) - / / Mover al siguiente columnif (slt; 10) {// Añadir un cero, si es necesario, como abovelcd.print (0) -} lcd.print (s) - // Visualizar el actual segundo}
Enviar este código a su Arduino y ver qué pasa. Si todo está bien y su código compila correctamente, usted debe estar en el negocio! La pantalla debe mostrar una época que coincide con el de su equipo.
En el código, se solicita la hora actual de la ahora objetar y se coloca en tres variables enteras utilizadas únicamente en el UpdateDisplay función. Estas variables tienen una el á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 por qué no se declaran al principio 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 ellos 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.
Habiendo analizado el tiempo en tres variables, lo principal que pasa en UpdateDisplay () se está posicionando el cursor en la pantalla LCD y imprimir el texto relevante. 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 decirle a la pantalla lo que desea imprimir. La numeración comienza en cero, por lo que el carácter superior de la izquierda está en la columna y la fila 0 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 (" La hora es: ").
Usted puede utilizar el lcd.clear () función, que borra todo el texto en toda la pantalla. Sin embargo, el reloj está en constante refrescante la pantalla, por lo que la limpieza de la pantalla LCD cada vez que el UpdateDisplay () ejecuta funciones pueden introducir sólo un poco de parpadeo perceptible. Un enfoque más sencillo (que utiliza una instrucción menos) 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 a la derecha y en la segunda fila, por lo que el tiempo está centrada en la pantalla:
lcd.setCursor (4,1) -
Un poco difícil 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 a los minutos horas y segundos en el mismo lugar en la pantalla.
Adición de los ceros a la izquierda se lleva a cabo de la misma manera para las horas, minutos y segundos:
si (HLT; 10) {// Añadir un cero, si es necesario, como abovelcd.print (0) -} lcd.print (h) - // Muestra la hora actual
El condicional si pruebas de declaración si la hora actual es inferior a 10, y de ser así, la impresión() declaración imprime un cero. Después de esto, la pantalla LCD avanza automáticamente a la siguiente posición de la columna, por lo que al imprimir la hora actual, almacena en la variable entera h, que tendrá un cero líder. Lo mismo ocurre con minutos y segundos.
También debe avanzar el cursor hasta la posición correcta para el cero a la izquierda para los minutos y segundos. Inserta una coma entre ellas con el lcd.print (": ") - comunicado.