Quiero que mi reloj de tiempo real establezca su hora como la hora en mi PC. Sin embargo, cuando ejecuto el siguiente boceto, el reloj en tiempo real informa que la hora es 32-33 segundos antes de lo que dice mi PC.
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// uncomment it & upload to set the time, date and start run the RTC!
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}
También he intentado configurar manualmente la hora en el RTC, pero termino con el mismo problema: el RTC siempre está 32-33 segundos detrás de lo que configuré. El retraso ocurre tan pronto como ejecuto el boceto. Me parece muy extraño que no importa cómo intente establecer la hora, termino exactamente con el mismo error. Puedo decirle al Arduino que informe que el tiempo es 33 segundos después de lo que dice el RTC, pero esta solución parece un poco incompleta, y me preocupa que algo esté fundamentalmente mal con mi RTC o la forma en que lo estoy usando.
Estoy usando un Arduino Uno con un escudo de registro de datos ensamblado de Adafruit. El escudo de registro de datos utiliza un DS1307 RTC. ¿Alguien ha tenido este problema antes o tiene alguna idea sobre lo que podría estar causándolo? Cualquier ayuda sería muy apreciada.