![DS1302 и Arduino UNO — Схема подключения и пример кода](https://voltiq.ru/wp-content/uploads/ds1302-arduino-uno-connection-01.jpg)
Модуль DS1302 – это устройство часов реального времени (RTC), созданное для точного учета времени и даты в различных проектах, где необходимо надежное и стабильное хранение временных данных. В этой статье мы представим вам подробную инструкцию о том, как подключить и использовать модуль DS1302 с популярной платформой разработки Arduino UNO.
8 комментариев. Оставить новый
Что то тут с пинами напутано! Можно переназвать пины и вообще проверить соответвие скетча к картинкам подключения?
Спасибо, исправили!
здраствуйте я переписал ваш код подключил все правильно но у меня в монитор порта вывелось 0-0-0 0:0:0 вместо настоящего времени что делать
Здравствуйте. Напишите здесь ваш код, постараемся помочь.
// Подключение модуля DS1302 к пинам Arduino
const int RST_PIN = 8; // Пин для управления чипом DS1302
const int DAT_PIN = 7; // Пин для передачи данных
const int CLK_PIN = 6; // Пин для синхронизации такта
Ds1302 rtc(RST_PIN, DAT_PIN, CLK_PIN); // Создаем экземпляр объекта для работы с модулем DS1302
void setup() {
Serial.begin(9600); // Открываем последовательный порт со скоростью 9600 бит/сек
rtc.init(); // Инициализируем модуль DS1302
}
void loop() {
Ds1302::DateTime now; // Создаем объект для хранения текущей даты и времени
rtc.getDateTime(&now); // Получаем текущую дату и время с модуля DS1302 и сохраняем их в объект now
Serial.print(now.year); // Выводим год
Serial.print(“-“);
Serial.print(now.month); // Выводим месяц
Serial.print(“-“);
Serial.print(now.day); // Выводим день
Serial.print(” “);
Serial.print(now.hour); // Выводим час
Serial.print(“:”);
Serial.print(now.minute); // Выводим минуты
Serial.print(“:”);
Serial.println(now.second);// Выводим секунды и переходим на новую строку
delay(1000); // Приостанавливаем выполнение программы на 1 секунду перед повторным чтением времени
}
Попробуйте в setup() задать начально время для RTC. Для этого добавьте следующий код после rtc.init():
if (rtc.isHalted()) {
Serial.println("RTC is halted. Setting time...");
// Установите актуальную дату и время на момент загрузки кода
Ds1302::DateTime dt = {
year = 24,
.month = Ds1302::MONTH_OCT,
.day = 12,
.hour = 4,
.minute = 51,
.second = 30,
.dow = Ds1302::DOW_TUE
};
rtc.setDateTime(&dt);
}
Не помогло!
Действительно, старый код не работал. Мы исправили его, и при правильном подключении датчика новый код будет работать. Мы проверили его работоспособность. Спасибо, что обратили на это внимание!