Несовместимость плат???
- Войдите на сайт для отправки комментариев
Здравствуйте, сразу к делу:
Есть готовый рабочий код на Arduino UNO R3. Суть: просто читает DS3231 (модуль часов реального времени) и выдаёт на 7-сегментный дисплей в формате часы-минуты-секунды-день недели.
Основная суть вопроса: на UNO R3 всё работает прекрасно с учётом подключения контактов SDA и SCL к соответствующим на самой уно, НО как только собираю и запускаю ту же схему и код на Nano- абсолютно отказывается работать модуль часов!
Скетч только для дисплея (бегущая строка, змейка символов и тд)- работает. Часы же одиночно- нет.
Я знаю что на Nano порты SDA и SCL используются как пины А4 и А5 (либо D4 и D5), но при подключении к ним- ноль реакции DS3231.
Могу грешить на код, что не хватает какой-либо библиотеки, оставлю его снизу для вашего изучения.
Отвечаю сразу на возможные вопросы:
1)плата нано полностью исправна, проверял с кучей шилдов, все супер
2)с джамперами (проводами) тоже всё ок, подключение исправно, контакт везде имеется
3)дни недели начинаются с 7-го, потому что в модуле часов залита американская прошивка, где неделя начинается с воскресенья. Исправил это так)
_________________________________________________________________________________
#include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7] = {7, 1, 2, 3, 4, 5, 6}; #include "LedControl.h" LedControl lc=LedControl(11,10,9,1); void setup() { if (! rtc.begin()) { abort(); } if (rtc.lostPower()) { rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //установка времени и даты компиляции кода } lc.shutdown(0,false); // подъём дисплея lc.setIntensity(0,0); // яроксть- второе число 0-15 lc.clearDisplay(0); // очистка дисплея при запуске } void loop() { DateTime now = rtc.now(); lc.setDigit(0,7, now.hour() / 10,false); lc.setDigit(0,6, now.hour() % 10,false); lc.setDigit(0,5, now.minute() / 10,false); lc.setDigit(0,4, now.minute() % 10,false); lc.setDigit(0,3, now.second() / 10,false); lc.setDigit(0,2, now.second() % 10,false); delay(600); lc.setDigit(0,6, now.hour() % 10,true); lc.setDigit(0,4, now.minute() % 10,true); //три мигающие точки lc.setDigit(0,2, now.second() % 10,true); delay(400); lc.setRow(0,1,0x1); lc.setDigit(0,0, daysOfTheWeek[now.dayOfTheWeek()], false); }
нано и уно на одном контроллере собраны, нет там разницы
используются как пины А4 и А5 (либо D4 и D5), никаких либо, только А4 и А5
Да, я тоже про это знаю, но повторюсь- на этих пинах и без изменений кода- ничего не работает (п.с. основная тема вопроса).
А запитываете часовой модуль от чего? Если от 3,3В, то запитайте от 5В
А что за нанка то? Где покупали?
Может клон какой херовенький (wavgat какой или ещё что)?
Да, я тоже про это знаю, но повторюсь- на этих пинах и без изменений кода- ничего не работает (п.с. основная тема вопроса).
значит у тебя не нано.
5В. пробовал и на 3.3, разницы нет
Кстати, только заметил, когда осматривал- чип wavgat-овский.
Это как-то портит малину?
дальше приписка просто идёт ATMega328P
https://aliexpress.ru/item/4000587268145.html?spm=a2g0o.productlist.0.0.21021fa8YFbmtu&algo_pvid=fb2c7172-2e13-44ad-935e-e6bb942ebdd2&algo_expid=fb2c7172-2e13-44ad-935e-e6bb942ebdd2-1&btsid=0ab6fab215951771447647679e0683&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
https://aliexpress.ru/item/4000587268145.html?spm=a2g0o.productlist.0.0.21021fa8YFbmtu&algo_pvid=fb2c7172-2e13-44ad-935e-e6bb942ebdd2&algo_expid=fb2c7172-2e13-44ad-935e-e6bb942ebdd2-1&btsid=0ab6fab215951771447647679e0683&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
По ссылке - обычная нано. Вавгатовские нано лежат здесь. Если у вас такая же, то вам нужно скачать файлы поддержки платы. Там, на странице ниже есть адрес
Так я описал же в топе- другие скетчи разной уровни сложности и потребности аппаратной части... все работают прекрасно, вот только проблема с этими I2C((
Это как-то портит малину?
Да, Wavgat не производит оригинальные чипы ATmega. Они делает клоны, частично совместимые с ATmega.
Так я описал же в топе- другие скетчи разной уровни сложности и потребности аппаратной части... все работают прекрасно, вот только проблема с этими I2C((
Это не полный аналог атмеги. По ссылке, что я вам дал, есть замечание
Так я описал же в топе- другие скетчи разной уровни сложности и потребности аппаратной части... все работают прекрасно, вот только проблема с этими I2C((
если я правельно помню, там библиотечка для и2с другая, вот и не работает.
Wavgat не на столько уж дешевле, чтобы потом гемороиться так сильно. Я беру в магазине Great Wall, ни разу пока не подводили.
Wavgat не на столько уж дешевле, чтобы потом гемороиться так сильно. Я беру в магазине Great Wall, ни разу пока не подводили.
+100500. Тоже повелся на дешевизну, лежит теперь пара вавгатовских про мини - вот думаю, куда бы приколхозить. И всего-то рублей на двадцать дешевле ))
а можешь здесь поподробнее?
Я пытался использовать библиотеку Wire.h- но она даже не определяет подключение DS3231
Т.е. вы все грешите на дешевизну платы, и следовательно из-за этого там и не работает у меня I2C???
OwL_1703 - напишите четко, к каким пинам подключаете I2C? - К А4 А5 или D4 D5 ?
Т.е. вы все грешите на дешевизну платы, и следовательно из-за этого там и не работает у меня I2C???
Дешевизна платы - это следствие. Просто на ней стоит не Atmega328, а китайский микроконтроллер, который не полностью совместим с атмегой. Вы скачали файлы по ссылке выше? Там есть библиотеки, которые нужно использовать с этой платой, в том числе Wire. И в IDE нужно выбирать Wavgat Nano
Изначально подключал к А4 и А5, кучу раз перепроверив- ничего. После этого на каком-то забугорном форуме нашёл, что у кого-то получилось через подключение к D4 и D5- но как понимаете... та же фЫгня)
Драйвера по ссылке установил, библиотеки тоже, попытался включить <Wire.h>- либо где в коде что-то не так, либо ОПЯТЬ ничего не работает(
(в устройстве выбрано WAVGAT Nano)
Чем делать бессмысленные телодвижения, напиши лучше, что на самом контроллере написано.