DS3231 rtc.begin() всегда возвращает false
Я использую Arduino UNO с модулем RTC DS3231. Я подключил SDA & Выводы SCL RTC DS3231 с Arduino SDA & Выводы SCL рядом с выводом AREF. Модуль RTC также имеет подключенную батарею. Мой код выглядит следующим образом:
#include <RTClib.h>
#include <Wire.h>
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {
"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"
};
void setup() {
Serial.begin(9600);
Wire.begin();
delay(3000);
//rtc.begin();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Следующая строка устанавливает RTC с явной датой & время
// например, чтобы установить 27 января 2017 года в 12:56, вы должны позвонить:
// rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0));
}
}
void loop() {
DateTime now = rtc.now();
Serial.println("Current Date & Time: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println("Unix Time: ");
Serial.print("elapsed ");
Serial.print(now.unixtime());
Serial.print(" seconds/");
Serial.print(now.unixtime() / 86400L);
Serial.println(" days since 1/1/1970");
// вычислить дату, которая составляет 7 дней & 30 секунд в будущее
DateTime future (now + TimeSpan(7,0,0,30));
Serial.println("Future Date & Time (Now + 7days & 30s): ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(1000);
}
Выполняя указанную выше команду и открывая Serial Monitor, я всегда получаю следующий вывод:
Couldn't find RTC
Может ли кто-нибудь помочь мне решить эту проблему.
@Sashi Kant, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 3
В коде нет ошибок. Скорее, это было неправильное соединение, которое мешало работе модуля RTC. Теперь, после восстановления, модуль RTC работает нормально.
,
@Sashi Kant
Вы можете пометить свой вопрос как «отвеченный»., @StarCat
Смотрите также:
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Библиотека времени Arduino и библиотеки RTC
- Ошибка модуля часов реального Времени-DS3231
- Adafruit RTC begin() не возвращает false
- Как установить управляющий регистр в модуле RTC DS3231 для Arduino UNO R3?
- DS3231 Не совпадает время при выключении Arduino
- Как вращать сервопривод каждые 12 часов с помощью модуля RTC?
Вы подключили DS3231 к VCC и подключили ли вы GND модуля DS3231 к GND вашего Arduino? У модуля DS3231 уже есть подтяжки на линиях SDA и SCL?, @StarCat
Да, я подключил DS3231 к VCC и GND с Arduino GND. Как я узнаю, есть ли у модуля DS3231 подтяжки на линиях SDA и SCL., @Sashi Kant
Это должно быть в даташите или на схеме. Другой вопрос: запускали ли вы скетч сканирования I2C или другую библиотеку, чтобы увидеть, виден ли DS3231 для вашего Arduino?, @StarCat
Да, это сработало. На самом деле проблема была в неисправном проводе в соединении ПДД. При проверке сканирования I2C не было обнаружено устройств I2C, затем я проверил соединения и обнаружил, что соединение SDA неисправно. После восстановления модуль RTC работает нормально. Спасибо за поддержку. Хотя чувствую себя очень глупо за такие ошибки., @Sashi Kant
Не стесняйтесь публиковать ответы на свои вопросы, чтобы другим не приходилось читать весь диалог комментариев. Поздравляю, кстати. Простые проблемы иногда самые сложные., @DataFiddler