Crea, comparte, aprende y disfruta
Reloj real
A veces nuestros proyectos necesitan utilizar la fecha y la hora actual. Ya sea para hacer saltar eventos (alarmas, un riego automático, encender luces… etc.), para mostrarla (cómo en el caso de un reloj) o para guardar un registro de eventos que incluya el día y la hora a la que sucedió un determinado cambio o evento.
Para todos estos casos, la mejor opción es utilizar un chip de reloj de tiempo real, que sepa en todo momento la hora y la fecha en la que nos encontremos. Uno de los más baratos y sencillos es el DS1307, que incluyen módulos muy económicos cómo el Tiny RTC I2C son fáciles de encontrar en Internet y es el que emplearemos para este tutorial.
Este módulo se comunica vía I2C, lo que facilita mucho su uso con Arduino. La forma de emplear estos módulos es muy sencilla, cuando necesitemos saber la hora y la fecha le diremos a Arduino que «se lo pregunte» al módulo. Este estará siempre en hora, incluso aunque hayamos retirado la alimentación de Arduino en algún momento, ya que lleva una pila de botón de litio CR2032.
La conexión de este módulo con Arduino es muy sencilla, simplemente tenemos que conectar el SCL y el SDA a los pines analógicos 4 y 5 de Arduino, que son los que están preparados para la conectividad I2C:
Pin del módulo | Pin del Arduino |
---|---|
SCL | A5 |
SDA | A4 |
Vcc | 5V |
GND | GND |
Ahora podemos probar el módulo utilizando este código que hace uso de la librería RTClib.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include #include "RTClib.h" RTC_DS1307 RTC; void setup () { Serial.begin(9600);//Iniciamos la comunicacion por serie Wire.begin();//Inicializamos la librería wire RTC.begin();//Inicializamos el módulo reloj /*Descomentando esta linea, enviamos la hora y fecha del ordenador al módulo para ponerlo en hora*/ //RTC.adjust(DateTime(__DATE__, __TIME__)); } void loop () { DateTime now = RTC.now();//Creamos un objeto que contiene la hora y fecha actual Serial.print(now.day(), DEC);//Mostramos por consola el dia Serial.print('/'); Serial.print(now.month(), DEC);//Mostramos por consola el mes Serial.print('/'); Serial.print(now.year(), DEC);//Mostramos por consola el año. Serial.print(' '); Serial.print(now.hour(), DEC);//Mostramos por consola la hora Serial.print(':'); Serial.print(now.minute(), DEC);//Mostramos por consola los minutos Serial.print(':'); Serial.print(now.second(), DEC);//Mostramos por consola los segundos Serial.println(); delay(5000);//Esperamos 5 segundos y volvemos a empezar } |
Si abrimos la consola de Arduino (utilizando este botón ) veremos que se nos muestra la hora y la fecha:
Deja una respuesta