Подключение LCD1602 к Arduino по I2C (HD44780/PCF8574)
Содержание
- PCF8574 — I2C модуль для LCD на базе HD44780
- Установка библиотеки LiquidCrystal I2C
- Описание методов библиотеки LiquidCrystal I2C
- Подключение LCD1602 к Arduino
- Создание собственных символов
- Проблемы подключения LCD1602 к Arduino по I2C
- Материалы
- Купить LCD Adapter PCF8574 на AliExpress
- Похожие записи
Подключить LCD1602 к Arduino (или любой другой LCD на базе микросхем HD44780) не всегда удобно, потому что используются как минимум 6 цифровых выходов. LCD I2C модули на базе микросхем PCF8574 позволяют подключить символьный дисплей к плате Arduino всего по двум сигнальным проводам (SDA и SCL).
PCF8574 — I2C модуль для LCD на базе HD44780
Микросхема PCF8574/PCF8574T обеспечивает расширение портов ввода/вывода для контроллеров через интерфейс I2C и позволит легко решить проблему нехватки цифровых портов. При использовании модуля как расширитель портов ввода/вывода следует учитывать то, что вывод Р3 имеет инверсный выход с открытым коллектором.
Микросхема может использоваться для управления ЖК дисплеем под управлением контроллера HD44780, в 4-х битном режиме. Для этой цели на плате установлена микросхема PCF8574, которая является преобразователем шины I2C в параллельный 8 битный порт.
Плата модуля разведена таким образом, чтобы ее можно было сразу подключить к ЖКИ. На вход подается питание и линии I2C. На плате сразу установлены подтягивающие резисторы на линиях SCL и SDA, потенциометр для регулировки контрастности и питание самого дисплея. Джампер справа включает/отключает подсветку.
Установка библиотеки LiquidCrystal I2C
Для работы с данным модулем необходимо установить библиотеку LiquidCrystal I2C. Скачиваем, распаковываем и закидываем в папку libraries в папке Arduino. В случае, если на момент добавления библиотеки, Arduino IDE была открытой, перезагружаем среду.
Библиотеку можно установить из самой среды следующим образом:
- В Arduino IDE открываем менеджер библиотек: Скетч-Подключить библиотеку-Управлять библиотеками…
- В строке поиска вводим LiquidCrystal I2C, находим библиотеку Фрэнка де Брабандера (Frank de Brabander), выбираем последнюю версию и кликаем Установить.
- Библиотека установлена (INSTALLED).
Описание методов библиотеки LiquidCrystal I2C
LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)
Конструктор для создания экземпляра класса, первый параметр это I2C адрес устройства, второй — число символов, третий — число строк.
init()
backlight()
Включение подсветки дисплея.
setCursor(uint8_t, uint8_t)
Установка позиции курсора.
clear()
Возвращает курсор в начало экрана.
home()
Возвращает курсор в начало экрана и удаляет все, что было на экране до этого.
write(uint8_t)
Позволяет вывести одиночный символ на экран.
cursor()
Показывает курсор на экране.
noCursor()
Скрывает курсор на экране.
blink()
Курсор мигает (если до этого было включено его отображение).
noBlink()
Курсор не мигает (если до этого было включено его отображение).
display()
Позволяет включить дисплей.
noDisplay()
Позволяет отключить дисплей.
scrollDisplayLeft()
Прокручивает экран на один знак влево.
scrollDisplayRight()
Прокручивает экран на один знак вправо.
autoscroll()
Позволяет включить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
noAutoscroll()
Позволяет выключить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
leftToRight()
Установка направление выводимого текста — слева направо.
rightToLeft()
Установка направление выводимого текста — справа налево.
createChar(uint8_t, uint8_t[])
Создает символ. Первый параметр — это номер (код) символа от 0 до 7, а второй — массив 8 битовых масок для создания черных и белых точек.
Подключение LCD1602 к Arduino
Модуль оборудован четырех-пиновым разъемом стандарта 2.54мм
- SCL: последовательная линия тактирования (Serial CLock)
- SDA: последовательная линия данных (Serial DAta)
- VCC: + питания
- GND: — питания
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся
Arduino Mega | Arduino Uno/Nano/Pro Mini | LCD I2C модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | VCC | Красный |
20 (SDA) | A4 | SDA | Зелёный |
21 (SCL) | A5 | SCL | Жёлтый |
Схема подключения LCD1602 к Arduino по I2C
Пример скетча
Результат
Создание собственных символов
С выводом текста разобрались, буквы английского алфавита зашиты в память контроллера. А вот что делать если нужного символа в памяти контроллера нет? Требуемый символ можно сделать вручную. Данный способ частично, ограничение в 7 символов, поможет решить проблему вывода.
Ячейка, в рассматриваемых нами дисплеях, имеет разрешение 5х8 точек. Все, к чему сводится задача создания символа, это написать битовую маску и расставить в ней единички в местах где должны гореть точки и нолики где нет.
Пример скетча
Результат
Проблемы подключения LCD1602 к Arduino по I2C
Если после загрузки скетча у вас не появилось никакой надписи на дисплее, попробуйте выполнить следующие действия:
- Можно регулировать контрастность индикатора потенциометром. Часто символы просто не видны из-за режима контрастности и подсветки.
- Проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный I2C переходник, то проверьте еще раз качество пайки контактов.
- Проверьте правильность I2C адреса. Попробуйте сперва поменять в скетче адрес устройства с 0x20 до 0x27 для PCF8574 или с 0x38 до 0x3F для PCF8574A. Если и это не помогло, можете запустить скетч I2C сканера, который просматривает все подключенные устройства и определяет их адрес методом перебора. Для изменения адресации необходимо установить джамперы в нужное положение, тем самым притянуть выводы A0, A1, A2 к положительному либо отрицательному потенциалу. На плате положения промаркированы.
Если экран все еще останется нерабочим, попробуйте подключить LCD обычным образом.
Материалы
Купить LCD Adapter PCF8574 на AliExpress
Похожие записи
Комментарии 1
Большой проект Color and Code версии 19. Определение элементов по цвету, коду, справочники, включая Arduino.
Есть встроенный калькулятор LCD1602 символов, генерация программной строки….
Источник: