Модуль Tiny RTC не работает как надо при подключении к Arduino Uno вместе с ЖК-дисплеем 16x2.

Я пытаюсь сделать цифровые часы, используя крошечный RTC, ЖК-дисплей 16x2 и Arduino Uno. Модуль RTC работает нормально, если ЖК-дисплей 16x2 не подключен к Arduino. И RTC, и LCD являются модулями I2C и, следовательно, используют одни и те же контакты A4 и A5 Arduino. Мне сообщили, что устройства I2C, подключенные параллельно, должны работать. Но в данном случае часы показывают время неправильно.

, 👍0

Обсуждение

Вы проверили, что адреса i2c разные? Схематическая и минимальная программа, демонстрирующая ошибку, была бы полезна., @Craig

Да, я сделал и обнаружил, что адреса разные (LCD: 0x3F и RTC: 0x50 и 0x68). Адреса для RTC разумны, поскольку они имеют встроенную память EEPROM., @picklu

Без дополнительной информации мы не сможем вам помочь. Добавьте схему и *минимальную* программу, демонстрирующую проблему., @Craig

Спасибо за быстрый ответ. По моей вине я на короткое время вытащил батарею из модуля RTC, что в конечном итоге привело к сбросу модуля., @picklu


1 ответ


1

Скетч сканера I2C может помочь определить фактические используемые адреса. Я бы использовал скетч, как на этой странице https://playground.arduino.cc/Main/I2cScanner или на этой странице http://gammon.com.au/forum/?id=10896&reply=6#reply6 . Или загуглите «arduino i2c scanner».

Подключите RTC отдельно и запустите сканер, затем подключите LCD отдельно и запустите сканер. Вывод будет на последовательном мониторе. Если у устройств одинаковый адрес, то это ваша проблема.

Если одно из устройств вообще не отображается, возможно, оно неисправно.

,

Спасибо за ценную информацию. Я просканировал устройство i2c и обнаружил, что у них разные адреса., @picklu

Я невероятно извиняюсь за свою грязную работу. Все началось, когда я вытащил батарею из RTC. Я был так расстроен, что забыл снова протестировать модуль RTC отдельно. Когда я попробовал другой RTC, он заработал идеально даже с ЖК-дисплеем. Я обнаружил, что время можно настроить как RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));, но это также сбрасывает время при нажатии кнопки сброса Arduino., @picklu

Я часто обнаруживаю, что узнаю что-то, не имеющее отношения к тому, что я на самом деле пытаюсь сделать., @user85471