Настройка ЖК-дисплея HD44780 с I2C в Marlin

marlin lcd-screen

Я делаю собственную плату управления на основе ESP32 и в настоящее время пытаюсь настроить ЖК-дисплей 16x2 в Marlin.

В Configuration.h есть опция для "Универсального адаптера ЖК-дисплея LCM1602", которую я закомментировал. Однако после поиска во всем источнике, который пришел мне на ум, я так и не нашел какой-либо опции для указания контактов I2C или адреса, к которому подключен рюкзак/адаптер ЖК-дисплея.

Может ли кто-нибудь указать мне правильное направление или где создается экземпляр ЖК-дисплея, чтобы я мог изменить соответствующие строки, чтобы он работал с моим ЖК-дисплеем? Мы будем очень признательны за любую помощь!

, 👍1

Обсуждение

Если вы найдете решение, пожалуйста, опубликуйте ответ здесь, так как он, вероятно, поможет другим с аналогичной проблемой., @Greenonline


1 ответ


3

Подключение I2C

Возможно, я недостаточно изучил информацию или неправильно прочитал разные статьи, но использование I2C кажется (гораздо) более сложным, чем прямое соединение без I2C, и может быть самостоятельным проектом. Если у вас нет свободного времени или вам нужно свести к минимуму количество используемых выводов, возможно, вам не стоит заморачиваться, и использование вместо этого обычного дисплея 1602, вероятно, имеет больше смысла.

G-код

Это кажется экспериментальным и, возможно, страдает от отсутствия документации.

Существуют две команды G-кода: M260 — I2C Send и M261 — запрос I2C, требующий EXPERIMENTAL_I2CBUS. Вторая ссылка относится к статье I2C master/slave, к сожалению, ссылка не указана (Ред. - если кто-то знает ссылку, отредактируйте, пожалуйста).

configuration.h

Это наиболее многообещающий вариант.

На странице конфигурации Marlin, Настройка Marlin, показаны две интересные таблицы для дисплеев I2C:

Таблицы светодиодных дисплеев I2C

Это библиотека LiquidCrystal I2C, на которую ссылаются над каждой таблицей.

Выпуск Marlin на Github

Это также кажется обнадеживающим.

Этот сообщение на I2C в Arduino для Marlin #10399,

  1. Это не слишком интенсивно. Многие периферийные устройства используют i2c.

  2. Marlin использует Wire на большинстве платформ. Включите EXPERIMENTAL_I2CBUS для упрощенного интерфейса в Marlin и ознакомьтесь с этой веткой (Dual Serial Порт № 4776 (комментарий)), чтобы узнать, как использовать i2c для связи со второй платой.

  3. Да, вы можете отправлять данные по i2c в любое время. См. вышеупомянутую тему для получения дополнительной информации об использовании EXPERIMENTAL_I2CBUS для тестирования связи i2c.

Рабочий пример

Этот параметр может быть излишним.

Этот блог, Расширитель портов I2C & LCD, работающий с Marlin, на самом деле имеет рабочий пример LCD I2C 2004. В нем также перечислены изменения, необходимые для configuration.h

.

Однако, к сожалению, для этого требуется дополнительная печатная плата расширителя портов I2C, в которой используется MCP23017, подробно описанный здесь, Расширитель портов I2C, управляющий ЖК-экраном, кодировщик кликов и многое другое.

Схема

Пример пересмотренной печатной платы версии 2.1 показан в следующем блоге, Panelolu2

Фото платы

Это требование дополнительного оборудования может быть больше, чем вы ожидали. Однако вы можете просто использовать макетную плату, чтобы сделать эту интерфейсную плату (расширитель портов).

Подключение не через I2C

Согласно этому сообщению на форумах RepRap, MARLIN - универсальный ЖК-дисплей 16x2 (плата Megatronics 2), контакты определены в ../Marlin/src/pins/pins.h ( имя файла немного поддавки).


Следующее может быть полезным, так как оно показывает строки, которые нужно изменить... но, очевидно, это зависит от вашей платы и от того, есть ли на вашем ЖК-дисплее 1602 только тонны или нет.

Для платы Megatronics 2 номера линий и контактов выглядят следующим образом (из последний пост):

что сейчас в Марлине:

#define SHIFT_CLK 38
#define SHIFT_LD 42
#define SHIFT_OUT 40
#define SHIFT_EN 17

#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
*/ 

каким он должен быть:

#define SHIFT_CLK 63
#define SHIFT_LD 42
#define SHIFT_OUT 17
#define SHIFT_EN 7

#define LCD_PINS_RS 14
#define LCD_PINS_ENABLE 15
#define LCD_PINS_D4 30
#define LCD_PINS_D5 31
#define LCD_PINS_D6 32
#define LCD_PINS_D7 33  

Стоит отметить из этот пост:

Я думаю, что ULTRA_LCD — это не то же самое, что обычный ЖК-дисплей 16x2 без кнопок.


< h3>Дополнительное чтение

Еще одна ссылка (на том же форуме), которая может быть полезна, — Как настроить выводы для ЖК-дисплея.


,

Спасибо за ответ! Однако эти инструкции предназначены для стандартного ЖК-дисплея 16x2 без адаптера I2C. Они не работают с адаптером I2C, так как потребуется использовать совершенно другую библиотеку, а вариант «Универсальный ЖК-адаптер LCM1602» был единственным, отдаленно близким к тому, что я использовал., @CryptoAlgorithm

Я обновил свой ответ некоторыми материалами I2C, которые я нашел, но вы, вероятно, уже видели их., @Greenonline