/*
Ejemplo de uso de reloj de tiempo real (RTC) DS1307
Utiliza la biblioteca RTClib de Adafruit
https://github.com/adafruit/RTClib
*/
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
String dias[7] = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves",
"Viernes", "Sabado" };
String meses[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("No se encuentra el dispositivo"));
while (1)
;
}
// Fijar a fecha y hora de compilacion
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// ...
// Fijar a fecha y hora específica YYYY-MM-DD-HH-MM-SS
// rtc.adjust(DateTime(2023, 10, 12, 8, 0, 0));
// Fijar a fecha y hora mediante el terminal serie
Serial.println("Ingresar fecha y hora en formato ISO8601 (2022-12-18T18:00:00):");
while (true) {
char buffer[20];
if (Serial.available() > 0) {
Serial.readBytesUntil('\n', buffer, 20);
Serial.print("El dato ingresado es: ");
Serial.println(buffer);
rtc.adjust(DateTime(buffer));
break;
}
}
}
void loop() {
// Obtener fecha actual
DateTime tiempo = rtc.now();
Serial.print(dias[tiempo.dayOfTheWeek()]);
Serial.print(" ");
Serial.print(tiempo.day(), DEC);
Serial.print(" de ");
Serial.print(meses[tiempo.month() - 1]);
Serial.print(" de ");
Serial.print(tiempo.year(), DEC);
Serial.print(" | ");
Serial.print(tiempo.hour(), DEC);
Serial.print(':');
Serial.print(tiempo.minute(), DEC);
Serial.print(':');
Serial.println(tiempo.second(), DEC);
delay(1000);
}