Почему модуль RTC не возвращает правильную дату/время?
У меня есть модуль RTC DS1307 (MR005-001.2) на Arduino Uno. Я использую библиотеки Wire.h / Time.h / DS1307RTC.h.
Возвращенная дата и время совершенно неверны ("17:18:9 2 4 2036") ... Что я делаю не так ??
Спасибо !
Вот мой частичный код для настройки() :
setSyncProvider(RTC.get);
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
Здесь написано "RTC установил системное время", так что я думаю, что-то происходит правильно...
Вот мой частичный код для loop() :
Serial.print(hour());
Serial.print(":");
Serial.print(minute());
Serial.print(":");
Serial.print(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
Точно так же, как в приведенном примере ... и возвращенная дата/время "17:18:9 2 4 2036"
@Mcrae, 👍0
Обсуждение1 ответ
Вы настраиваете интерпретацию, которая должна быть больше похожа на:
setSyncProvider(RTC.get);
if(timeStatus()!= timeSet)
Serial.println("RTC has never been set");
else
Serial.println("RTC has a time");
Чтобы условно синхронизировать часы со временем компиляции, если часы не запущены:
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__));
}
// following line unconditionally resets 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__));
Чтобы безоговорочно синхронизировать его со временем компиляции, раскомментируйте последнюю строку и перезагрузите в течение одного цикла, затем повторно прокомментируйте ее и перезагрузите, чтобы часы работали сами по себе.
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
- Очень простая операция Arduino Uno Serial.readString()
- AT-команда не отвечает на последовательный монитор
Вы когда-нибудь [устанавливали time](https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code#setting-the-time)?, @Gerben
Я думаю, если функция TimeStatus() возвращает набор времени, это потому, что время было установлено ? В документации для "Набора времени" в качестве возвращаемого значения указано : "Время установлено и синхронизировано. Значения времени и даты недопустимы, если статус установлен по времени. В противном случае можно использовать значения, но возвращенное время может измениться, если статус TimeNeedsSync. ". Я что-то неправильно понимаю ? Я думал, что смысл часов RTC заключается в синхронизации с часами компьютера, так зачем устанавливать время ?, @Mcrae
Это не синхронизируется с помощью магии. Для этого вам нужно добавить код (хотя бы один раз). `Набор времени " используется только в том случае, если библиотека не может получить доступ к модулю RTC. Модуль RTC считает, что сейчас 2036 год, и просто продолжает увеличивать время каждую секунду., @Gerben
Можете ли вы, по крайней мере, подтвердить, что часы работают так, как ожидалось, т. е. текущее время увеличивается так, как ожидалось?, @jfpoilpret