Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Arduino RTC (Real Time Clock)

 
Un reloj en tiempo real (en inglés, real-time clock, RTC) es un reloj de un ordenador, incluido en un circuito integrado, que mantiene la hora actual. Los RTC están presentes en la mayoría de los aparatos electrónicos que necesitan guardar el tiempo exacto.

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:

VCC_______ 5V
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 codigo:


#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("Miercoles");
    break;
    case 5:
    Serial.print("Jueves");
    break;
    case 6:
     Serial.print("Viernes");
    break;
    case 7:
     Serial.print("Savado");
    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: