En otras palabras un RTC mantiene tanto la hora como la fecha incluso si desconectas la alimentación principal. En mi caso utilizare el DS1302:
Este modelo es muy fácil de utilizar solo debes conseguir las librerías adecuadas, yo utilizo la librería Virtualboty RTC he probado varias y prefiero esta porque es muy fácil de utilizar.
Lo primero es conectar el RTC a tu Arduino lo harás de esta forma:
GND______ GND
Pin 8______ RST
Pin 7______ DAT (I/O)
Pin 6______ CLK
Cuando este conectado lo primero sera configurar la hora en el RTC con este código:
#include <virtuabotixRTC.h> // Incluye la librería
virtuabotixRTC myRTC(6, 7, 8); // Define los pines de CLK, DAT y RST en ese
//orden y nombra al RTC "myRTC" para llamarlo de esa manera luego
void setup() {
// Graba seg, min, hor, dia sem, dia mes, mes, año
myRTC.setDS1302Time(00, 20, 15, 3, 2, 9, 2014)
// Mar 10/9/2014 15:20:00
}
void loop() {
}
Con esto grabamos la fecha y la hora pero esta fecha y hora se gravaran cada vez que conectemos nuestro arduino a la PC o a alguna fuente de alimentación.
¿Porque? simple el código en el arduino iniciara siempre que lo conecten, porque los microcontroladores leen el código desde el inicio hasta el final y solo se detienen si programan una rutina que se repita una y otra vez en este caso void loop.
Con el siguiente código veremos lo que programamos con el primero es decir la fecha y la hora.
#include <virtuabotixRTC.h>
virtuabotixRTC myRTC(6, 7, 8);
void setup() {
Serial.begin(9600); // Inicia el serial a 9600 baudios
}
void loop() {
myRTC.updateTime(); // Lee los datos del RTC
switch (myRTC.dayofweek) { // Lee el Dia Sem y escribe el dia correspondiente
case 1:
Serial.print("Domingo");
break;
case 2:
Serial.print("Lunes");
break;
case 3:
Serial.print("Martes");
break;
case 4:
Serial.print("Miércoles");
break;
case 5:
Serial.print("Jueves");
break;
case 6:
Serial.print("Viernes");
break;
case 7:
Serial.print("Sábado");
break;
}
Serial.print(" ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);
delay( 1000);
}
Luego habríamos el monitor serial y nos mostrara esto:
Bueno eso es todo siéntete libre de preguntar si tienes alguna duda o si deseas hacer una sugerencia.












































.jpg)






