Chcę, aby mój zegar czasu rzeczywistego ustawiał czas jako czas na moim komputerze. Jednak po uruchomieniu poniższego szkicu zegar czasu rzeczywistego zgłasza, że jest o 32-33 sekundy wcześniej niż mówi mój komputer.
#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();
}
Próbowałem też ręcznie ustawić czas w RTC, ale mam ten sam problem: RTC jest zawsze o 32-33 sekund opóźniony. Opóźnienie ma miejsce, gdy tylko uruchomię szkic. Wydaje mi się bardzo dziwne, że bez względu na to, jak próbuję ustawić czas, mam dokładnie ten sam błąd. Mogę powiedzieć Arduino, aby zgłosiło czas jako 33 sekundy po tym, co mówi RTC, ale to rozwiązanie wydaje się dość szkicowe i martwię się, że coś jest zasadniczo nie tak z moim RTC lub sposobem, w jaki go używam.
Używam Arduino Uno ze złożoną tarczą do rejestrowania danych od Adafruit. Tarcza rejestrowania danych wykorzystuje DS1307 RTC. Czy ktoś miał wcześniej ten problem lub miał jakieś pomysły na to, co może być przyczyną? Każda pomoc będzie mile widziana.