miércoles, 26 de diciembre de 2018

Arduino Reloj en tiempo real DS1307

Esta mañana cuando he querido utilizar el Tiny RTC que tenía por casa los códigos que tenía no me compilaban bien. Para solucionarlo me he bajado la libreria time de:  https://github.com/PaulStoffregen

Mientras aprendía de nuevo a utilizar el RTC he programado este pequeño código gracias al cual he comprendido como se utiliza el RTC y ahora tengo todo lo que necesito para implementarlo al programa con el que estoy trabajando.


#include <Wire.h> // Comunicacion I2C 
#include "RTClib.h" // libreria ADAFRUIT para DS3231 
RTC_DS1307 RTC;

int input; //Para ller el numero pasado por serial

void setup() {
  Wire.begin(); // Inicia el puerto I2C
  RTC.begin(); // Inicia la comunicación con el RTC 
  
  Serial.begin(9600); // Establece la velocidad de datos del puerto serie
  
  Datos(); //Imprimimos el menu de comandos
  
}// Fin de Setup

void loop() {

if (Serial.available()>0){
  
  input=Serial.read(); //Leemos el serial
  
  if (input=='1') {
    PrintFecha(); //Si el caracter leido es 1 imprime la fecha
    }
    else if (input=='2'){
      PrintHora(); //Si el caracter leido es 1 imprime la fecha
    }
    else if (input=='5'){
      PonerNuevaFecha(); //Si el caracter leido es 5 Cambia la fecha y la hora
    }
    else if (input=='9'){
       Sincronizar(); //Si el caracter leido es 1 imprime la fecha
    }
    
  }//Fin if serial
}

void PrintFecha() {
 
 DateTime ahora = RTC.now(); // captura valores del tiempo
 
 Serial.print("Fecha:  ");
 Serial.print(ahora.day(), DEC);
 Serial.print('/');
 Serial.print(ahora.month(), DEC);
 Serial.print('/');
 Serial.print(ahora.year(), DEC);
 Serial.println();
}//Fin PrinFecha

void PrintHora() {
 
 DateTime ahora = RTC.now(); // captura valores del tiempo

 Serial.print("Hora:  ");
 Serial.print(ahora.hour(), DEC);
 Serial.print(':');
 Serial.print(ahora.minute(), DEC);
 Serial.print(':');
 Serial.print(ahora.second(), DEC);
 Serial.println();
 
}//Fin PrintHora

void Sincronizar (){
  Serial.println();
  Serial.println ("  Nueva Fecha Sincronizada: ");
  Serial.println ("-----------------------------");
  RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora del sistema
  PrintFecha();
  PrintHora();
  Serial.println ("-----------------------------");
}//Fin Sincronizar


void PonerNuevaFecha  (){
  RTC.adjust(DateTime(2010, 07, 10, 12, 05, 00));//DateTime(ano, mes, dia, hora, min, seg)
  Serial.println();
  Serial.println ("  Nueva Fecha actualizada: ");
  Serial.println ("----------------------------");
  PrintFecha();
  PrintHora();
  Serial.println("---------------------------");
  Serial.println();
}//Fin Sincronizar

void Datos(){
  Serial.println();
  Serial.println();
  Serial.println ("  Introduce un comando: ");
  Serial.println ("----------------------------");
  Serial.println (" 1 : Imrime la Fecha del RTC ");
  Serial.println (" 2 : Imrime la Hora del RTC ");
  Serial.println (" 5 : Modifica e imprime la Fecha yla Hora del RTC ");
  Serial.println (" 9 : Sincroniza e imprime la Hora y la Fecha del RTC ");
  Serial.println();
  Serial.println();
}//Fin Datos

No hay comentarios:

Publicar un comentario