Я хочу, щоб годинник у режимі реального часу встановлював його час як час на моєму ПК. Однак, коли я запускаю наступний ескіз, годинник у режимі реального часу повідомляє про час на 32-33 секунди раніше, ніж мої ПК говорять про час.
#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();
}
Я також намагався встановити час на RTC вручну, але я закінчував тією ж проблемою: RTC завжди на 32-33 секунди відстає від того, на що я його встановив. Відставання відбувається, як тільки я запускаю ескіз. Мені здається дуже дивним, що як би я не намагався встановити час, у мене виявляється абсолютно однакова помилка. Я можу сказати Arduino повідомити про час як про 33 секунди після того, як RTC каже, що це є, але це рішення здається начебто схематичним, і я переживаю, що щось не є в принципі не так з моїм RTC або способом, яким я його використовую.
Я використовую Arduino Uno із зібраним щитом реєстрації даних від Adafruit. Щит для реєстрації даних використовує RTC DS1307. Хто-небудь мав цю проблему раніше, чи є якісь ідеї щодо того, що може викликати її? Будь-яка допомога буде дуже вдячна.