• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Модуль работы с LCD индикатором на базе HD44780

l15ar

Member
В общем, мне нужно подключить текстовый LCD индикатор, с интерфейсом HD44780.
Проблем много, начиная с того, большинство индикаторов 5-ти вольтовые. Решаемо.
Одна из проблем, фактически огромные накладные расходы на работу с этим индикатором!
Всё бы ничего, проблемы начинаются с программной реализации шины I2C на чипах 8266.
Это медленно, тоже терпимо. Главные проблемы - необходимые задержки, в паузах команд.
Большинство решений, которые нашёл - используют 4-х битовый интерфейс, фактически жрёт время.
Не знаю, склоняюсь к тому, единственное правильное решение - использовать мост на
attiny2313 (или любой другой МК) реализующий SPI-интерфейс, со всеми плюшками внутри.

В любом случае, пилю модуль на I2C расширителе PCF8574, ради интереса! Постараюсь
минимизировать пустые задержки, фактически, работая в режиме запись-чтение с опросом статуса.
Честно, нигде в поганых Arduino, никто, не делал полноценный режим работы с HD44780!
Модули увиденные на гитхабе, не вдохновили совсем, примитивно, много дублей внутри..
...
 

enjoynering

Well-known member
очень интересно посмотреть на ваш - "модуль на I2C расширителе PCF8574".

пы.сы. мой экземпляр PCF8574 спокойно работал на частоте I2C шиы 600КГц (по datasheet максимум 400КГц)
 

enjoynering

Well-known member
Оооо lua, спасибо не надо. Вот мой вариант на arduino, с возможностью работы HD44780 на любых пинах PCF8574 - https://github.com/enjoyneering/LiquidCrystal_I2C

Не силён с lua, но по-моему у вас отсутствует правильная инициализация HD44780 для работы в 4 битном режиме. Зачем-то дрыгаете отдельно, от передачи байта, ногой(битом) EN. Это как раз стандартная копипаста, от которой вы говорили и хотели уйти. Но видно не судьба. Посмотрите мой код, там все намного проще - просто меняем бит EN при отправке вторых 4бит из 8-и (у нас же 4-х битный режим). Нету защиты от дурака - например если юзер возьмёт и введёт отправку на 100500 строку и тд. В общем вам есть куда расти.
 

l15ar

Member
Уважаемые! Речь идёт о модуле на языке микро-python! :)
Относительно частоты работы экземляра расширителя, на текущий момент не важно. (400К)
За основу взят модуль - https://github.com/dhylands/python_lcd
 

enjoynering

Well-known member
Извините я вас перепутал с постом товарища nikolz. Он дал ссылку на lua пример, я не посмотрел от кого, подумал это вы и тут все закрутилось.
 

l15ar

Member
Тут же и ещё одна проблема.
Индикатор(модуль на пайтоне) должен понимать текст в формате utf-8!
Для начала, в усечённом виде, распространнённые символы. :\
Потому как, кодировать и декодировать непонятно что, не дело..
--
Хотел бы, минимизировать издержки на обмен с индикатором.
Т.е нужно произвести профайлинг и выявить слабые места.
--
Мне удобно выводить информацию на экран(ы) 20х4 и др. форматы.
На пайтоне делаю прототипы, поскольку пайтон знаю.
 

enjoynering

Well-known member
ИМХО питон, не самый лучший выбор для микроконтролеров - слишком много отъедает ресурсов.
 

l15ar

Member
ИМХО питон, не самый лучший выбор для микроконтролеров - слишком много отъедает ресурсов.
Конечно! Для меня micropython в новинку!
Хочу полностью изучить micropython и увидеть возможности и недостатки.
Для arduino-макетирования этого micropython выше крыши, больше и не нужно! :)
 
Сверху Снизу