Arduino.ru
LCD I2C arduino не могу подключить
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
попробовать опредилить адрес заливаю его а мне только показывает Scanning. и дальше ничего. Что подскажете сделать?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
а почему дисплей подключен сразу к 3,3 В и к 5 В?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
там просто плохо видно он подключен к 5 и к земле
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все вы правильно делаете. Ищите контакт со стороны UNO, попробуйте разъемы SCL и SDA на UNO рядом с кварцем.
Можете рассмотреть чип на переходнике. Маркировка PCF8574T даст I2C адрес по умолчанию 0x27, PCF8574AT — адрес 0x3F.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я это все уже пробовал к сожалению ничего не помогло, а маркировка ida8574p n2k0h5
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
сканер I2C какой адрес выдает?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
в том и дело что сканер ничего не выдает пишет что началось сканирование и все ничего более не происходит
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Код сканера корректно обрабатывает ситуации, когда вообще никакое устройство не подключено к I2C. Был неправ, дело не в контакте. Что-то у вас с программной средой.
Маркировкой чипа адаптера сильно озадачили. Но дело все равно не в этом.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
и что посоветуете сделать? уже куча всего перепробовал
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
прописать ноги Ардуины как входы, дальше сделать пустой бесконеный цикл и посмотреть тестером наряжение на ногах, т.е. проверка на наличие подтягивающих резисторов к +5В
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну подсказал же уже. Железо тут вообще ни при чем, этот код работает на пустой плате. Далек от среды ардуино, но специально запустил приведенный вами код на такой же плате, что и на фотографии. Библиотека Wire работает хорошо и не зависает, мне не удалось найти в ее коде возможные причины зависания при неподключенном устройстве.
Если правильно вас понял, вы видите в окне терминала слово Scanning. и на этом все заканчивается. Но чудес не бывает (только если очень редко). Из цикла for вы не выходите, зависнуть там можно только при входе в Wire (ну или в twi.h, которая под ней), никто из них не зависает (у меня, специально мучил).
Какой вывод? Разбирайтесь со средой, с ее установками или что там. Вообще что-нибудь, не требующее перефирии, запускается?
И вам спасибо. Благодаря вам посмотрел библиотеки, twi.h забавно написана, хорошо.
Arduino.ru
Подключение по I2C почему зависает?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Подключил к Arduino NANO BMP280, RTS_DS3231 и Oled SD1306.
Проверил, всё по отдельности — работает. Скомпоновал код на все 3 модуля, Ардуино виснет на процедуре Setup при инициализации 3 модуля.
Пробовал различные комбинации кода для работы по парно, т.е. часы с экраном, экран с BMP, BMP с часами. Попарно тоже все работает, а все вместе зависает на инициализации любого 3-го модуля.
Толи питания не хватает, толи нужно ставить какие-то подтягивающие резисторы?
Это мои первые шаги в освоении ардуино, так что не судите строго.
Схема подключения:
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
в каких то девайсах мне приходилось инициализацию дисплея вынести вперед
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
в каких то девайсах мне приходилось инициализацию дисплея вынести вперед
Неа, не помогает. Кстати, зависает именно на модуле экрана.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Резисторы подтяжки проверь.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я не ставил ни одного резистора. Все как на схеме. Я и обратился сюда, чтоб подсказали, куда их ставить?
Какие номиналом и самое главное понять почему?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Да вроде хватает. Компилятор выдает:
Кстати, отсюда, попутно, еще один вопрос — это, что так мало памяти?! я еще планировал в этот проект подключить УЗ датчик, модуль SD карты и GSM модуль, а уже 90% памяти занято
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Это называется проектированием. Рисуем схему с модулями. Пишем сколько кому надо тока, памяти и прочих ресурсов. Суммируем. Выбираем МК, который справится с задачей. С Вашей задачей нана не справится. Нужен контроллер мощнее. Или урезать хотелки. Например взять экран не так сильно жрущий память.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Это называется проектированием. Рисуем схему с модулями. Пишем сколько кому надо тока, памяти и прочих ресурсов. Суммируем. Выбираем МК, который справится с задачей.
Блин, ну понятно, что проектировать надо. Это первые шаги.
По току то можно прикинуть:
BMP280 — 2,7мкА, RTS_DS3231 -250мкА, Oled SSD1306 — 16мА. Арпдуино нано выдает 40мА, должно хватать. По ходу прикрутки остальных модулей, проблему можно решить с внешним питанием.
А вот как быть с расчетом памяти заранее, не понимаю? Просветите.
Да я понимаю, но принять не могу. Ну, не мегу же ставить! Или придется 2-3 нано использовать?
Может я ошибаюсь, но в сравнении с BMP280 и часиками, экран памяти хавает, не так уж и сильно. Без него 58% памяти, т.е. 32% а 58% другие два датчика! Я в шоке конечно пребываю, и все это можно сказать только примеры использование. А когда начнешь еще и свой код ваять, там вообще ничего не остается. Вроде всякие проекты в интернете видел, как они все это умещают в памяти?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Используют только то что необходимо программе, а не сыпят всё в подряд что есть в библиотеках. Компилятор конечно помогает что то лишнее выкинуть но много и остается. Это тоже к проектированию относится — составить необходимый минимум подпрограмм. Проще конечно взять библиотеку и не думая впихнуть. Оно заработает. Однако на форуме много тем типа считываем данные без библиотеки и т.п. Есть тема про 13 тиньку там памяти мало и нужно как то впихивать программы. Страниц в теме много, но если бегло почитать, то можно найти много советов как уменьшить размер программы.
P.S. Компилировал — Скетч использует 17254 байт (56%) памяти устройства. Всего доступно 30720 байт.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Используют только то что необходимо программе, а не сыпят всё в подряд что есть в библиотеках. Компилятор конечно помогает что то лишнее выкинуть но много и остается. Это тоже к проектированию относится — составить необходимый минимум подпрограмм. Проще конечно взять библиотеку и не думая впихнуть. Оно заработает. Однако на форуме много тем типа считываем данные без библиотеки и т.п. Есть тема про 13 тиньку там памяти мало и нужно как то впихивать программы. Страниц в теме много, но если бегло почитать, то можно найти много советов как уменьшить размер программы.
Благодарю за ссылку, да, есть, что там по изучать.
Все таки хотелось вернуться к главному вопросу, почему не работает 3 модуля вместе и как это исправить?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чем спорить, можете принять или не можете, лучше поставьте резисторы как Вам сказали (два штуки по 4,7к от пинов A4 и A5 ардуины на питание)
и вставьте после строки №24
Отпишитесь, что получилось с обязательным выкладыванием актуальной схемы и актуального скетча.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
float, Serial, шрифты для OLED — основные загрязнители. От первого не избавитесь в ближайшем будущем, от второго — легко, для экрана взять u2glib — такие рекомендации можно дать.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я не ставил ни одного резистора. Все как на схеме.
На схеме они уже есть. Причем, по два экземпляра каждого, потому что они имеются в каждом из модулей (в этом и есть опасность сборки схему из готовых модулей, а не из деталей россыпью). Вам нужно проверить, что при параллельном включении итоговое сопротивление не окажется меньше 2 кОм.
А вот как быть с расчетом памяти заранее, не понимаю? Просветите.
Что значит «заранее»?
Переменная типа char занимает 1 байт, типа int — два байта, типа long или flot — 4 байта. Если массив на 100 элементов — в 100 раз больше. А дальше — просто сложение. Арифметику в школе изучали?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
почему не работает 3 модуля вместе и как это исправить?
На это может быть 1001 причина.
Как исправить — зависит от причины.
Другими словами, прежде, чем пытаться лечить, следует поставить диагноз.
Диагностику следует начинать с поверки, что разные библиотеки на «дерутся» за одни и те же ресурсы. В качестве ресурсов следует рассматривать оперативную и постоянную память, пины контроллера, таймеры и прерывания. Ну и еще — время: в программе, которая работает с несколькими разными устройствами, как правило, не должно быть задержек типа delay().
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чем спорить, можете принять или не можете, лучше поставьте резисторы как Вам сказали (два штуки по 4,7к от пинов A4 и A5 ардуины на питание)
и вставьте после строки №24
Отпишитесь, что получилось с обязательным выкладыванием актуальной схемы и актуального скетча.
Отписываюсь. Кошмар какой то. Ардуино — это какой то бред недоделанный. Я думал все гораздо проще будет. Подключил модуль, подключил библиотеку и работай. А тут такое мракобесие. Как уже только не переделывал и схему и код, но толи лыжи не едут, толи китайцы враги русского народа.
Подключил в эту схему подтягивающие резисторы, как и советовал на 4,7кОм
, добавил делей на 24 строчке кода. Запустил, не работает.
Ну ладно, думаю. начнем все сначала, как будет работать все по отдельности с этими резюками. Начал с датчика температуры. Оп, не работает. Колдовал и так и сяк, убрал резюки. Не работает. Пересобрал всю схему. Подключил только BMP. Танцы с бубном, все заработал. Подтянул SDA и SDL резисторами. Работает, изменений нет. Добавляю модуль Oled. Работает.
Добавляю часы. Програмно отключаю дисплей. Все работает.
Отключаю БМП, подключаю дисплей и часы. Работает, но перестал работать *.print ни в сом порт, ни в экран, причем как то выборочно, как это возможно.
Хрен с этими датчиками, там да ну может конфликтовать библиотеки, какие ни будь помехи, но когда один код глючит, я всю голову сломал. Почему один Serial.print(«get_time»); работает, а следом за ним Serial.print(timeT); не работает
Решаем проблему не рабочей I2C связи для LCD 1602
Дисплеи Winstar на контроллере hd44780 довольно популярны, но их стандартное подключение к контроллеру по 16-и линиям не совсем удобно — масса проводов занимает драгоценные пины.
В данной ситуации есть выход — модуль I2C переходника. Подключается он всего по двум проводам. Но есть небольшие проблемы.
Сначала нужно скачать и установить библиотеку для работы с I2C дисплеем LiquidCrystal_I2C. Далее нужно задать адрес дисплея, указывается он в этой строке:
Адрес 0x27 стандартен для большинства модулей, но бывают и исключения из этого правила. Иногда он определяется как стандартный, но дисплей с ним не работает. Проверить адрес можно довольно просто, загрузив нижеприведенную программу (I2Cscanner) в плату Arduino:
Далее нужно открыть Serial Monitor и посмотреть считанный адрес. Но, как и говорилось ранее, иногда модуль по какой-то причине не работает с адресом 0x27. Что же делать?
В таком случае на плате модуля I2C существуют перемычки для переключения на другой адрес. На рисунке они обозначены как A0, A1, A2:
Замыкая какую либо из них, мы получаем новый адрес и все начинает работать. Например, замкнем A0. Загрузим скетч сканера на плату получим следующее:
Прописываем адрес в программу загружаем и видим, что всё работает нормально: