Ребята подскажите, код универсальный и простой,запускаю все нормально работает, когда отключаю ардуинку время сбивается, что надо сделать что бы время сохранилась на памяти и работал там? (свой источник проверил есть напр. 3.3В) Код (C++): #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1307); void setup() { delay(300); Serial.begin(9600); time.begin(); // time.settime(0,21,19,10,02,17,5); // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник } void loop(){ if(millis()%1000==0){ // если прошла 1 секунда Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс } }
@loker95 Удалите диод который стоит рядом с микросхемой ds3231, схема модуля неправильная, китайцы наверно рассчитывали на аккумулятор.
Какого модуля? Где диод? https://www.aliexpress.com/item/DS3...lt&btsid=e8f743a6-6394-4634-8ce4-74631e0cca94 Автору нужно по шагам описать, что он делает и что у него за модуль. Сейчас даже не ясно как он узнал, что время сбилось и где оно сбилось. Может на микроволновке? Если отключать модуль от работающей Ардуино, то следует сначала отключить сигнальные провода, а за тем питание, чтобы на сигнальных линиях не было напряжение выше напряжения питания.
У меня вот такой https://ru.aliexpress.com/item/RTC-DS3231-EEPROM-ATC24C32/32836006254.html И, видимо, опять же было рассчитано на аккум, а в комплекте батерейка, поскольку время "зависает" при выключении. Но до установки проверял и вроде время нормально тикало. А что получается с вышеуказанным диодом и не-аккумулятором? В попытке подзарядки схема сажает батарею в 0 или около того?
Попробуйте: Сменить батарейку Выпаять диод (перекусить его, если нечем выпаять), хотя в новых модулях этого диода нет Используйте нормальную библиотеку RTClib Проверьте подключение
Там нестандартная, меньше, чем на классических, но да, надо идти от простого к сложному и поменять. У меня все так, как на фото со ссылки - диод стоит. Выпаять я смогу, но жаль как-то - может, тогда правда аккум поискать? У меня форк, https://github.com/Naguissa/uRTCLib Проверял. Разве что я батарейку вставил неправильно.
Тут такой еще вопрос - в некоторых источниках пишется что-то вроде "Резисторная сборка RP1 (4.7 кОм), необходима для подтяжки линий 32K, SQW, SCL и SDA (кстати, если используется несколько модулей с шиной I2C, необходимо выпаять подтягивающие резисторы на других модулях)" И вот этого я не совсем понимаю. Мало ли сколько устройств на I2C в конкретном проекте. И вот щаззз я брошусь на всех остальных выпаивать резисторы. Просто у меня еще ко второму входу (справа) подпаян BMP-280. И вот задумался, все ли правильно.
Что правильно или неправильно тут может быть? Тактовую линию, как и линию данных нужно подтягивать к питанию. Все! Как это будет сделано - на вашей совести Если у каждого модуля на линии будет по резистору, то сопротивление будет падать (параллельное включение резисторов смотрите), а значит толку от подтягивающих резисторов не будет.
Я знаю про параллельное и последовательное включение резисторов, но я не могу на каждом модуле рассмотреть, есть у них подтягивающие резисторы или нет. Есть ли какая-то традиция у производителей модулей для Ардуино и др. - положено ставить подтягивающие резисторы или нет? Ну у Вас же наверняка на шине I2C было больше одного устройства (голосом Винни-Пуха : на то оно и шина) Вот Вы выпаивали? Вот, например, на BMP280 видится ну очень похожее на подтягивающую сборку, и даже вроде видно, что SDA подтягивается к земле. Эхх, придется, видимо, резать дорожки хотя бы на SDA и SCL... А то у меня давно складывается впечатление, что девайсы на I2C стали работать как-то неуверенно с добавлением RTC и BMP280.