• Система автоматизации с открытым исходным кодом на базе 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 выше крыши, больше и не нужно! :)
 
Сверху Снизу