El reloj RTC o Real Time Clock es uno de los componentes que utilizamos para que el reloj funcione. Su papel consiste en marcar el año, mes, día y hora lo más exacto posible. Estos dispositivos electrónicos, tienen una fuente de alimentación, ya que si se le corta la corriente tiene que seguir con su funcionamiento, es decir, seguir marcando la hora.
Están formados por un resonador de cristal, con los circuitos necesarios para contabilizar de manera correcta el paso del tiempo. También, su electrónica cuenta con medidores sexagesimal, que es el que usamos todos, para leer horas, días, meses y años.
Estos dispositivos son muy utilizados en la electrónica para dar la hora en smartphones, ordenadores, tabletas, etc.
El código que utiliza este dispositivo es el siguiente:
#include <Wire.h>
#include "RTClib.h"
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
String daysOfTheWeek[7] = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" };
String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };
void setup() {
Serial.begin(9600);
delay(1000);
if (!rtc.begin()) {
Serial.println(F("Couldn't find RTC"));
while (1);
}
// Si se ha perdido la corriente, fijar fecha y hora
if (rtc.lostPower()) {
// Fijar a fecha y hora de compilacion
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Fijar a fecha y hora específica. En el ejemplo, 21 de Enero de 2016 a las 03:00:00
// rtc.adjust(DateTime(2016, 1, 21, 3, 0, 0));
}
}
void printDate(DateTime date)
{
Serial.print(date.year(), DEC);
Serial.print('/');
Serial.print(date.month(), DEC);
Serial.print('/');
Serial.print(date.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[date.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(date.hour(), DEC);
Serial.print(':');
Serial.print(date.minute(), DEC);
Serial.print(':');
Serial.print(date.second(), DEC);
Serial.println();
}
void loop() {
// Obtener fecha actual y mostrar por Serial
DateTime now = rtc.now();
printDate(now);
delay(3000);
}
Como podemos ver, que primero se tiene que identificar los días y meses con las funciones, String Days of the week [7] y String Monthnames [12].
Los Serial.begin es la comunicación que se mantiene entre el ordenador, el arduino y el Reloj RTC, con ello, hay que determinar que cantidad de información se transfiere que es el número que viene al lado.
Luego con el SerialPrint lo que hace es que registra y muestra los datos que se mandan a través de los Serial.Begin en el monitor serie.
Al final de esto, DateTime now es el tiempo que el reloj rtc está marcando.