Комментарии 40
Спрячьте, пожалуйста, код под спойлер.
+3
Тему Вы затронули полезную, это точно.
Когда я в конторе разработкой электроники занимался, паралельные интерфейсы ЖК-дисплеев ужасно бесили при дизайне и разводке плат.
К сожалению дисплеев работающих по I2C вообще очень мало, и не всегда удавалось подыскать а тем более заказать подходящий.
Поэтому чаще ограничивались паралельным интерфейсом с 4 разрядами вместо 8 (почти все ЖК-дисплеи это умеют) — в сумме вместе с управляющими получалось штук 8-9 проводников вместо 12-13.
Код Ваш, честно говоря несколько прискорбный. Вы же умеете использовать массивы? Вот и юзайте их вместо этих длинных цепочек одинаковых вызовов и вместо этого switch-а для печати цифр…
И по поводу использования библиотек — я бы осмелился порекомендовать на данном этапе пробовать без них. Сколько помню у данного чипа достаточно простой и внятный к I2C был подход, так что методически было бы весьма полезно читать мануал по нему нежели искать по форумам нужную библиотечку :)
Впрочем повторюсь, сама тема актуальная весьма, фотографии достаточно неплохо получились — так что пост вызывает одобрительные чувства!
Когда я в конторе разработкой электроники занимался, паралельные интерфейсы ЖК-дисплеев ужасно бесили при дизайне и разводке плат.
К сожалению дисплеев работающих по I2C вообще очень мало, и не всегда удавалось подыскать а тем более заказать подходящий.
Поэтому чаще ограничивались паралельным интерфейсом с 4 разрядами вместо 8 (почти все ЖК-дисплеи это умеют) — в сумме вместе с управляющими получалось штук 8-9 проводников вместо 12-13.
Код Ваш, честно говоря несколько прискорбный. Вы же умеете использовать массивы? Вот и юзайте их вместо этих длинных цепочек одинаковых вызовов и вместо этого switch-а для печати цифр…
И по поводу использования библиотек — я бы осмелился порекомендовать на данном этапе пробовать без них. Сколько помню у данного чипа достаточно простой и внятный к I2C был подход, так что методически было бы весьма полезно читать мануал по нему нежели искать по форумам нужную библиотечку :)
Впрочем повторюсь, сама тема актуальная весьма, фотографии достаточно неплохо получились — так что пост вызывает одобрительные чувства!
+3
Ну я только начал, и использую конструкции, которые понимаю. Это мне позволяет как-то двигаться дальше=))
По библиотекам — согласен — получается то одно не работает, то другое. Я пока буду осваивать — как костыли их оставлю. Потом буду прописывать все в коде функциями.
Спс. Буду массивы пробовать внедрять.
По библиотекам — согласен — получается то одно не работает, то другое. Я пока буду осваивать — как костыли их оставлю. Потом буду прописывать все в коде функциями.
Спс. Буду массивы пробовать внедрять.
+1
Так вы попробуйте помимо Arduino ещё и язык Си поизучать… Нарочно! И вообще программирование — задачки небольшие порешайте и т.п. — чтобы это из головы в пальцы перетекло и не мешало вам заниматься серьёзными вещами ;-)
Это страшно поможет!
Многие разработчики firmware которых я знал как раз испытывали сложности в разработке из-за того что уровень скиллов программистских у них был… Ну как у ленивого студента — им трудно писать код такой чтоб его потом было легко поддерживать, трудно искать ошибки в этом коде… А как результат устройства работают то криво, то ненадёжно — причём с электроникой особенно стрёмно когда не знаешь, то ли баг в программе, то ли где-то контакт пропадает (или появляется) когда не нужно :D
Это страшно поможет!
Многие разработчики firmware которых я знал как раз испытывали сложности в разработке из-за того что уровень скиллов программистских у них был… Ну как у ленивого студента — им трудно писать код такой чтоб его потом было легко поддерживать, трудно искать ошибки в этом коде… А как результат устройства работают то криво, то ненадёжно — причём с электроникой особенно стрёмно когда не знаешь, то ли баг в программе, то ли где-то контакт пропадает (или появляется) когда не нужно :D
+2
К сожалению дисплеев работающих по I2C вообще очень мало, и не всегда удавалось подыскать а тем более заказать подходящий.
На ебее есть универсальные дисплеи работающие в том числе через uart. т.е. всё что нужно — VCC, GND, RX. Соответсвенно, элементарно подключается к чему угодно, например к openwrt-роутеру.
роутер с дисплеем
0
Переходник I2C для LCD хорош для прототипа устройства, а при сборке часов на основе м/к atmega он не имеет смысла, если хватает выводов микроконтроллера…
На счет оптимизации кода — прочитайте про PROGMEM…
На счет оптимизации кода — прочитайте про PROGMEM…
+1
Вы не затронули вопрос с pullup-резисторами для i2c, они нужны при подключении многих устройств.
Важно при начале сборки любой схемы с i2c проверить каждый по отдельности этим — playground.arduino.cc/Main/I2cScanner — конфликты адресов сложно вылавливать.
И последнее — видимо, вы тестировали это только на Uno. Дальше вам точно захочется сделать из прототипа компактную схему и вы полезете на Ebay покупать крохотную Ардуино Pro Micro, основанную на железе от Ардуино Leonardo. И тут с большой вероятностью вас ждёт облом, так как 9 из 10 библиотек для i2c устройств несовместимы с Leonardo или ведут себя непредсказуемо.
(написано по результатам танцев с бубном вокруг Leonardo, часов на 1302, барометра 185, пары LCD-дисплеев и одного i2c level shifter в течение недели).
Важно при начале сборки любой схемы с i2c проверить каждый по отдельности этим — playground.arduino.cc/Main/I2cScanner — конфликты адресов сложно вылавливать.
И последнее — видимо, вы тестировали это только на Uno. Дальше вам точно захочется сделать из прототипа компактную схему и вы полезете на Ebay покупать крохотную Ардуино Pro Micro, основанную на железе от Ардуино Leonardo. И тут с большой вероятностью вас ждёт облом, так как 9 из 10 библиотек для i2c устройств несовместимы с Leonardo или ведут себя непредсказуемо.
(написано по результатам танцев с бубном вокруг Leonardo, часов на 1302, барометра 185, пары LCD-дисплеев и одного i2c level shifter в течение недели).
+1
Я не понимаю смысла покупать микро, у меня лежит пара про мини по 100 рублей (которая без usb ), я сегодня проверю на ней — отпишусь. По железу там один к одному. Про микро не ипользовал, может какая специфика.
0
Мой спич был про то, что на каждой Leonardo и Pro Micro должна быть надпись «не глотать» и «не давать маленьким детям» «не надеяться, что пример i2c кода из интернета сразу заработает или вообще заработает».
ProMini можете не испытывать — там всё идентично Uno.
ProMini можете не испытывать — там всё идентично Uno.
+1
Понятно. Ну если есть старое железо, то предполагается уже есть и опыт по настройке этого железа под современные требования)) Я не рассматриваю другие МК кроме меги328 и меги8. Первой хватает для новичка за глаза, вторая под мелкие проекты.
0
А почему бы сразу не попробовать под атмегу писать? Ну или аттини например.
0
Всмысле писать в AVR stuidio?
Я начал изучать основы на сайте дихальта, но столкнулся с проблемами.
Чем прошить код в мк? Ранее я уже повторял схемы и у меня есть com программатор (Громова, не помню) для меги и тиньки, но, чтобы прошить — нужно выставлять фьюзы во внешей программе. Минимальное понимание есть, но это далеко не так удобно как с ардуиной. Я куплю нормальный USB программатор-отладчик, но не скоро, ибо не горит. Есть более важные вещи, осциллограф например.
Готовые библиотеки ардуины позволяют сразу получить результат. А мне это важнее, чем месяц ковыряния и непонятная перспектива, что будет дальше.
На самом деле, пока не требуется каких-то оптимизация и чистого кода, мне подходит Ардуина.
Я начал изучать основы на сайте дихальта, но столкнулся с проблемами.
Чем прошить код в мк? Ранее я уже повторял схемы и у меня есть com программатор (Громова, не помню) для меги и тиньки, но, чтобы прошить — нужно выставлять фьюзы во внешей программе. Минимальное понимание есть, но это далеко не так удобно как с ардуиной. Я куплю нормальный USB программатор-отладчик, но не скоро, ибо не горит. Есть более важные вещи, осциллограф например.
Готовые библиотеки ардуины позволяют сразу получить результат. А мне это важнее, чем месяц ковыряния и непонятная перспектива, что будет дальше.
На самом деле, пока не требуется каких-то оптимизация и чистого кода, мне подходит Ардуина.
0
Cпасибо за ссылку на сканер I2C адреса устройства. Я в этом слабо пока разобрался.
0
О. Интересная тема, спасибо. Я ещё жду посылку с моим стартовым комплектом, но эти вещи меня уже тревожат. Концепция сдвига регистров и каскадных можем меня не порадовала, показавшись сложной. Хотя возможно это из-за отсутствия опыта.
0
Я вот тоже сидел ждал пока придут железки. Есть тот же Протеус, которому можно скормить компиленый код из Ардуиновой IDE и посмотреть как работает схемка без железа, но меня не впечатлило.
+1
Не, это скучно. Хочется демонически хохотать при вспышках молнии, чтобы потом выбегать в дымящемся халате с криками «HE IS ALIVE!»
0
Это уже роботы… а роботы это дорого, долго, но занимательно. Даже фенольного робота чтобы собрать — нужно умудриться найти игрушки подходящей комплектности. Сегодня ездил искал фенольные танки — и не нашел! Похоже они канули в лету как и 2007 год… roboforum.ru/forum88/topic2214.html
0
То есть фактически это расширитель портов?
0
0
Классно)) Однако, если под рукой нет экрана от 6610, то дорого выходит его покупать. Я себе заказал TFT от китайфона с тачем за 200 рублей… Как предет буду мучать. Оказался самый оптимальный вариант.
0
А можно ссылку на этот экран?
0
www.ebay.com/itm/251488572950?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
+1
Существуют ли реле, подключающиеся через I2C? Для управления электромоторами например
0
Это микросхема MCP23017 + любое реле шилд или микросхема-ключ. Вот только управлять сервами так не получится…
0
Ещё подойдет этот же переходник i2c для LCD экрана, в котором PCF8574 — аналог MCP23017, но на 8 выводов, а не на 16 как MCP23017
+1
Спасибо за информацию. Хоть и не я вопрос задавал.
0
Если интересна тема расширителей портов, то тут есть ещё варианты с примерами для Arduino:
playground.arduino.cc/Code/I2CPortExpander8574
MCP23017 это как MCP23016, но у второй выходы с открытым коллектором.
playground.arduino.cc/Code/I2CPortExpander8574
MCP23017 это как MCP23016, но у второй выходы с открытым коллектором.
+1
Добрый день!
Чисто теоретический вопрос: А вместо i2c можно ли для LCD использовать сдвиговый регистр? Нам же вроде для LCD не нужно никакие данные читать, а только писать и для этого вполне подойдёт сдвиговый регистр для выхода? Я так понимаю, что в этом случае нужно будет писать какую то свою библиотеку для работы с LCD через сдвиговый регистр.
Чисто теоретический вопрос: А вместо i2c можно ли для LCD использовать сдвиговый регистр? Нам же вроде для LCD не нужно никакие данные читать, а только писать и для этого вполне подойдёт сдвиговый регистр для выхода? Я так понимаю, что в этом случае нужно будет писать какую то свою библиотеку для работы с LCD через сдвиговый регистр.
+1
Можно, все уже придумано
cjparish.blogspot.ru/2010/01/controlling-lcd-display-with-shift.html
cjparish.blogspot.ru/2010/01/controlling-lcd-display-with-shift.html
+1
Вот еще статейка:
robocraft.ru/blog/arduino/541.html
robocraft.ru/blog/arduino/541.html
+1
Спасибо за ссылку на мою давнишнюю статью — как раз в тему всяких I2C-переходников. Людям советую не заморачиваться с переходниками, если более-менее развиты программерские скиллы: в статье как раз расписано, как заставить работать LCD и сервомашинки через сдвиговые регистры, которые легко заменить на I2C-микросхемы, дописав интерфейс к ножкам микросхемы. Дело в том, что микросхемы в DIP-корпусах стоят копейки и изучаются за 1 день, после чего можно делать переходники с чего угодно на SPI или I2C. А кто и в с производством плат ЛУТом знаком, тот сможет сэкономить место, заказав микросхемы в мелких корпусах и приделав плату с ними прямо на заднюю стенку LCD или другого устройства.
+1
-> нашел переходник на I2C для моего LCD
А можно ссылочку на этот переходничок?
А можно ссылочку на этот переходничок?
+1
Автор выше писал: habrahabr.ru/post/219137/#comment_7491639 Хотя такую информацию неплохо было бы добавит в статью, а то сразу вопрос возникает: Что за переходник? :-)
0
дело в том что их три вида, и в них есть мелочи, которые отличаются, в том числе адресация, чипы, на которых они собраны…
Конкретно я брал тут www.ebay.com/itm/310565362720
Кстате, это очень хороший продавец, рекомендую. У него взял уже массу всяких шабашек и микрух.
Дополнил текст
Конкретно я брал тут www.ebay.com/itm/310565362720
Кстате, это очень хороший продавец, рекомендую. У него взял уже массу всяких шабашек и микрух.
Дополнил текст
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Уменьшаем количество проводов в Arduino — I2C LCD экран и RTC часы по двум проводам