Si no sabes que es un RTC (Real Time Clock) o modulo RTC te dejo la descripcion de wikipedia https://es.wikipedia.org/wiki/Reloj_en_tiempo_real . Pero basicamente es un reloj con una bateria externa para mantenerse en hora cuando no tenemos alimentado el Arduino. Ademas el modulo que usaremos lleva el IC DS1307 y una memoria EEPROM 24C32.

 


Esquema de conexiones para arduino Uno, se conecta en los pines I2C SDA y SCL de Arduino, para otro arduino debemos saber cuales son estos pines:

 


Instalación de Librería: RTClib de Adafruit

Set RTC:

#include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
}
void loop () {
}

Test:

#include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
}
void loop(){
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
  
Serial.print(now.year(), DEC); // Año
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); // Dia
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
delay(1000); // La información se actualiza cada 1 seg.
}

Funcion Day of week: Nos devuelve el dia de la semana que es.

#include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
}
void loop () {
DateTime now = RTC.now();
Serial.print("Dia de la semana: ");
Serial.println(now.dayOfWeek(), DEC); // L(1), M(2), X(3), J(4), V(5), S(6), D(7)
delay(1000); // La información se actualiza cada 1 seg.
}

 

 

Categorías: Arduino

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: