Проблема в коде при программировании на ардуино уно
При следующем коде:
#include "Wire.h"
#include "iarduino_RTC.h"
iarduino_RTC time(RTC_DS1302,7,6,8); // для модуля DS1307 с i2C
#include "LiquidCrystal_I2C.h" // подключаем библиотеку для дисплея
LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя дисплею
void setup() {
delay(300);
LCD.init(); // инициализация LCD дисплея
LCD.backlight(); // включение подсветки дисплея
time.begin();
time.settime(0, 30, 18, 12, 6, 20, 5); // 0 сек, 30 мин, 18 часов, 12, июня, 2020, четверг
}
void loop() {
// если прошла 1 секунда выводим время на дисплей
if (millis() % 1000 == 0) {
LCD.setCursor(0,0);
LCD.print(time.gettime("d M Y, D"));
LCD.setCursor(4,1);
LCD.print(time.gettime("H:i:s"));
delay(1);
}
}
показывает не введённое время, а 45 декабря, 2099 год, суббота, 45:85:85
в чём ошибка? в инете пишут что покопайтесь в строчке iarduino_RTC time(RTC_DS1302,7,6,8); я пробовал менять порядок пинов, безрезультатно. помогите прошу, заранее спасибо
Что происходит:
ТЫ написал: iarduino_RTC time(RTC_DS1302,7,6,8);
При этом в комментарии написал: "для модуля DS1307 с i2C".
Проблема:
DS1307 — это I2C-устройство.
А он его пихает через режим подключения для DS1302 (три провода, не I2C).
Это вообще разные протоколы!
Поэтому библиотека ждёт сигналы на "ножках" 7,6,8, а с модуля ничего не приходит.
И в итоге чип считает себя счастливым хозяином помойки: "45 декабря, 2099 год, суббота, 85 секунд в минуте" — нормальный исход для глючного подключения.
Как правильно:
Для DS1307 нужно писать создание объекта без всяких указаний пинов.
Вот так:
iarduino_RTC time(RTC_DS1307);
И всё.
Никаких пинов указывать не надо!
DS1307 сидит на шине I2C — он общается через стандартные SDA/SCL (на Uno это A4 и A5).
Ты специально вывел код обычным текстом, а комментарий - кодовым окном, чтобы и код было х_во видно, и коммент для прочтения пришлось скролить? Очень удобно, спасибо, оценил.
Пздц какой то