El DS1307 Real-Time Clock (RTC) es un módulo muy utilizado para mantener la hora en proyectos con Arduino. Mantiene la hora con precisión incluso cuando el Arduino está apagado, gracias a su batería interna. En este tutorial aprenderás a conectar y programar el módulo DS1307 RTC con el Arduino para mostrar y actualizar la hora.
Lo que necesitarás
- Placa Arduino (por ejemplo, Uno, Mega, Nano)
- Módulo DS1307 RTC
- Protoboard y cables de conexión
- Un ordenador con el IDE de Arduino instalado
- Bibliotecas: RTClib
Paso 1: Conectar el módulo DS1307 RTC
El DS1307 RTC se comunica con el Arduino mediante el protocolo I2C.
Conexiones
| Pin del RTC | Pin del Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Nota: Si usas una placa Arduino con pines dedicados SDA y SCL (por ejemplo, Mega), conecta los pines SDA/SCL del RTC a esos en su lugar.
Paso 2: Instalar la biblioteca requerida
Para trabajar con el DS1307 RTC necesitarás la biblioteca RTClib.
Pasos para instalar RTClib
- Abre el IDE de Arduino.
- Ve a Sketch > Include Library > Manage Libraries.
- Busca "RTClib" en el Gestor de Bibliotecas.
- Haz clic en Install.
Paso 3: Subir el código de ejemplo
Aquí tienes un sketch de ejemplo para mostrar la fecha y hora actual desde el módulo DS1307:
Código de ejemplo
#include
#include
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Check if the RTC is running
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running! Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
// Display the time
Serial.print(now.hour());
Serial.print(":");
if (now.minute() < 10) {
Serial.print("0");
}
Serial.print(now.minute());
Serial.print(":");
if (now.second() < 10) {
Serial.print("0");
}
Serial.println(now.second());
// Display the date
Serial.print(now.day());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.println(now.year());
delay(1000); // Update every second
}
Paso 4: Ajustar la hora
Si el RTC no está funcionando o la hora necesita actualizarse, puedes usar la siguiente línea en la función setup():
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)yF(__TIME__)son macros que establecen la fecha y hora desde tu ordenador cuando subes el sketch.
Para ajustar una hora específica manualmente, usa:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
Paso 5: Usar los datos del RTC en tus proyectos
El DS1307 puede proporcionar datos de hora para una variedad de aplicaciones, como:
- Registro de datos: Registrar con marcas de tiempo lecturas de sensores o eventos.
- Alarmas y temporizadores: Disparar acciones basadas en horas específicas.
- Relojes: Crear relojes digitales o analógicos con pantallas.
Ejemplo: Disparar una acción a una hora específica
void loop() {
DateTime now = rtc.now();
// Check if it's 8:00 AM
if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
Serial.println("It's 8:00 AM!");
}
delay(1000);
}
Resolución de problemas
-
RTC no encontrado:
- Verifica las conexiones SDA y SCL.
- Asegúrate de que la batería esté instalada correctamente.
-
Hora incorrecta:
- Usa
rtc.adjust()para reiniciar la hora. - Comprueba si la batería del RTC está descargada o falta.
- Usa
-
Datos inconsistentes:
- Asegura una alimentación estable al Arduino y al módulo RTC.
Aplicaciones del DS1307 RTC
- Relojes en tiempo real y alarmas
- Sistemas de automatización basados en tiempo
- Registro de datos con marcas de tiempo
- Sistemas de recordatorios
Conclusión
El módulo DS1307 RTC es una excelente herramienta para añadir funcionalidad de cronometraje a tus proyectos con Arduino. Siguiendo esta guía puedes configurar el RTC, mostrar hora y fecha, e incorporarlo en diversas aplicaciones. ¡Experimenta combinando el DS1307 con pantallas o sensores para crear proyectos aún más dinámicos!






1 comentario
Beim Verwenden des Befehls rtc.adjust(DateTime(F(DATE), F(TIME))); wird der sketch zwar fehlerlos kompiliert und hochgeladen, beim Ausführen des Programms stürzt das Programm aber ab, was auch zur Folge hat, dass die USB-Verbindung zum PC crasht und ein Hochladen von sketchs nicht mehr möglich ist. Abhilfe schafft dann nur ein Trick?. Nach einem Doppelclick auf die Reset-Taste des Boards funktioniert die USB-Verbindung wieder.