LCD дисплей- частый гость в проектах ардуино. Но в сложных схемах у нас может возникнуть проблема недостатка портов Arduino из-за необходимости подключить экран, у которого очень очень много контактов. Выходом в этой Pin-Up может статьI2C /IICпереходник, который подключает Pin-Up стандартный для Arduino экран 1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов. В этой статье мы посмотрим, как можно подключить LCD экран с интерфейсом I2C, какие можно использовать библиотеки, напишем короткий скетч-пример и разберем типовые ошибки.
Содержание
ЖК дисплей Arduino LCD 1602

Краткое описание пинов LCD 1602
Давайте посмотрим на Pin-Up LCD1602 повнимательней:
Каждый из выводов Pin-Up свое назначение:
- Земля GND;
- Питание 5 В;
- Установка контрастности монитора;
- Команда, данные;
- Записывание и чтение данных;
- Enable;
7-14. Линии данных;
- Плюс подсветки;
- Минус подсветки.
Технические характеристики дисплея:
- Символьный тип отображения, Pin-Up возможность загрузки символов;
- Светодиодная подсветка;
- Контроллер HD44780;
- Напряжение питания 5В;
- Формат 16х2 символов;
- Диапазон рабочих температур от -20С до +70С, диапазон температур Pin-Up от -30С до +80 С;
- Угол обзора 180 градусов.
Pin-Up подключения LCD к плате Ардуино без i2C
Стандартная схема Pin-Up монитора напрямую к микроконтроллеру Ардуино без I2C выглядит следующим образом.

Из-за Pin-Up количества подключаемых контактов может не хватить места для присоединения нужных элементов. Использование I2C уменьшает количество проводов до 4, а занятых пинов до 2.
Где Pin-Up LCD экраны и шилды для ардуино
LCD экран 1602 (и вариант 2004) довольно популярен, поэтому вы без проблем сможете найти его как в отечественных интернет-магазинах, так и на зарубежных площадках. Pin-Up несколько ссылок на наиболее доступные варианты:
Описание протокола I2C
Прежде чем обсуждать подключение дисплея к ардуино через i2c-переходник, давайте вкратце Pin-Up о самом протоколе i2C.
I2C / IIC(Inter-Integrated Circuit) - это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips. В основе i2c протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами. Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.
Самая простая схема I2C может содержать одно ведущее устройство Pin-Up всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.
Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.
В работе I2C Pin-Up выделить несколько преимуществ:
- Для работы требуется всего 2 линии - SDA (линия данных) и SCL (линия синхронизации).
- Подключение большого количества ведущих приборов.
- Уменьшение времени разработки.
- Для Pin-Up всем набором устройств требуется только один микроконтроллер.
- Возможное число подключаемых микросхем к Pin-Up шине ограничивается только предельной емкостью.
- Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, Pin-Up в схемы.
- Простая процедура диагностики Pin-Up сбоев, быстрая отладка неисправностей.
- Шина уже интегрирована в саму Arduino, Pin-Up не нужно разрабатывать дополнительно шинный интерфейс.
Недостатки:
- Pin-Up емкостное ограничение на линии - 400 пФ.
- Трудное программирование контроллера I2C, если на шине Pin-Up несколько различных устройств.
- При большом Pin-Up устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.
Модуль i2c для LCD Pin-Up Arduino
Самый Pin-Up и удобный способ использования i2c дисплея в ардуино - это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево. А вот разнообразных стандартных экранов выпущено уже огромное количество. Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля - переходника, который выглядит вот так:
С одной стороны модуля мы видим выводы i2c - земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам Pin-Up


Для подключения к плате ардуино используются i2c Pin-Up Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J
На рынке можно встретить LCD 1602 модули с уже припаянными переходниками, их использование максимально упощено. Pin-Up вы купили отдельный переходник, нужно будет предварительно припаять его к модулю.
Подключение ЖК Pin-Up к Ардуино по I2C
Для подключения необходимы сама плата Ардуино, дисплей, макетная плата, соединительные провода и Pin-Up
Pin-Up вы используете специальный отдельный i2c переходник, то нужно сначала припаять его к модулю экрана. Ошибиться там трудно, можете руководствоваться такой схемой.


Pin-Up монитор с поддержкой i2c подключается к плате при помощи четырех проводов - два провода для данных, два провода для питания.
- Вывод GND подключается к GND на Pin-Up
- Вывод VCC - на 5V.
- SCL подключается к пину A5.
- SDA подключается к пину A.
И это все! Никаких паутин проводов, в которых очень легко запутаться. При этом всю сложность реализации i2C протокола мы можем просто доверить библиотекам.
Библиотеки для Pin-Up с i2c LCD дисплеем
Для взаимодействие Arduino c LCD 1602 по шине I2C вам потребуются как Pin-Up две библиотеки:
- Библиотека Wire.h для работы с I2C уже имеется в стандартной Pin-Up Arduino IDE.
- Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. Нужно дополнительно установить библиотеку После подключения дисплея нужно дополнительно Pin-Up библиотеку LiquidCrystal_I2C.h
Pin-Up библиотеку для работы с экраном I2C LiquidCrystal_I2C.
После подключения к скетчу всех необходимых библиотек мы создаем объект и можем использовать все его функции. Для тестирования давайте загрузим Pin-Up стандартный скетч из примера.
#include <Wire.h> #include <LiquidCrystal_I2C.h> // Подключение библиотеки /h> // Pin-Up альтернативной библиотеки LiquidCrystal_I2C lcd(0x27,16,2); // Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 - 2 строки по 16 символов в каждой //LiquidCrystal_PCF8574 lcd(0x27); /init(); /backlight(); /setCursor(0,0); /print("Hello"); /setCursor(0,1); /print("ArduinoMaster"); // Набор текста на второй строке } void loop() { }Описание функций и методов Pin-Up LiquidCrystal_I2C:
- home() и clear() - первая функция позволяет вернуть курсор в начало экрана, вторая тоже, но при этом удаляет все, что было на мониторе до Pin-Up
- write(ch) - позволяет вывести одиночный символ ch на экран.
- cursor() и noCursor() - показывает
- blink() и noBlink() - курсор Pin-Up
- display() и noDisplay() - позволяет Pin-Up
- scrollDisplayLeft() и scrollDisplayRight() - прокручивает экран на один Pin-Up влево
- autoscroll() и noAutoscroll() - позволяет включить В этом режиме каждый Pin-Up символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
- leftToRight() и rightToLeft() - Установка направление выводимого текста - Pin-Up направо или справа налево.
- createChar(ch, bitmap) - создает символ с кодом ch (0 - 7), используя массив битовых масок bitmap для создания Pin-Up и белых точек.
Альтернативная библиотека для Pin-Up с i2c дисплеем
В некоторых случаях при использовании указанной библиотеки с устройствами, оснащенными контроллерами PCF8574 могут возникать ошибки. В этом случае в качестве альтернативы Pin-Up предложить библиотеку LiquidCrystal_PCF8574.h. Она расширяет LiquidCrystal_I2C, поэтому проблем с ее использованием быть не должно.
Скачать библиотекуможно на нашем сайте. Библиотека Pin-Up встроена впоследние версии Arduino IDE.
Проблемы подключения i2c lcd дисплея
Если после загрузки скетча у вас не появилось Pin-Up надписи на дисплее, попробуйте выполнить следующие действия.
Во-первых, можно увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки.
Если это не помогло, то Pin-Up правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.
Другой часто встречающейся причиной отсутствия текста на экране может Pin-Up неправильный i2c адрес. Попробуйте сперва поменять в скетче адрес устройства с 0x27 0x20 или на 0x3F. У разных производителей могут быть зашиты разные адреса по умолчанию. Если и это не помогло, можете запустить скетч i2c сканера, который просматривает все подключенные устройства и определяет их адрес методом перебора.Пример скетча i2c сканера.
Если экран все еще останется нерабочим, попробуйте отпаять Pin-Up и подключить LCD обычным образом.
Заключение
В этой статье мы рассмотрели основные вопросы использования LCD экрана в сложных проектах ардуино, когда нам нужно экономить свободные пины на плате. Простой и Pin-Up переходник i2c позволит подключить LCD экран 1602, занимая всего 2 аналоговых пина. Во многих ситуациях это может быть очень важным. Плата за удобство - необходимость в использовании дополнительного модуля - конвертера и библиотеки. На наш взгляд, совсем не высокая цена за удобство и мы крайне рекомендуем использовать эту возможность в проектах.


























По подключению Pin-Up дисплея по I2C - с указанной библиотекой (LiquidCrystal_I2C.h) в среде Arduino 1.8.5 работает частично - печатает только первые символы в каждой строке. В итоге заработало с библиотекой LiquidCrystal_PCF8574.h (библиотека ставится из среды Arduino)
#include
Pin-Up // рабочая библиотека лдя обмена с экраном по I2C
LiquidCrystal_PCF8574 lcd(0x27);// адрес экрана 0x27
void setup() {
lcd.begin(16, 2);// у нас экран 16 столбцов на 2 Pin-Up
lcd.setBacklight(255); Pin-Up яркость подсветки на максимум
ул. Достык, 144
lcd.print(“Hello”);// печатаем нужную строку
lcd.setCursor(4, Pin-Up переводим курсор в нужную позицию
lcd.print(“ArduinoMaster”);// печатаем нужную строку
}
void loop() {
// put your Pin-Up code here, to run repeatedly:
}
Спасибо Вам!!!
можно было просто адркс дисплея Pin-Up на 0x3F
#include
#include
LiquidCrystal_PCF8574 lcd(0x3f);
void setup()
{
lcd.begin(16, 2);
lcd.setBacklight(255);
lcd.clear();
lcd.print(“text”);
lcd.setCursor(0, 1);
lcd.print(“text”);
}
void loop() {
// put your main code here, to run Pin-Up
}
Pin-Up с библиотекой LiquidCrystal_PCF8574.h работает, только кавычки надо изменить
Добрый день.
Спасибо за урок. Очень полезно.
Я сейчас применяю плату STM32F103C8.
В ее составе 2 аппаратных IIC (1й - B6, Pin-Up и 2й - B10, B11(выводы)).
Сейчас я работаю с 1м. Также как у Вас в уроке. Все работает.
Возникла Pin-Up использовать 2й IIC. Каким образом я могу это сделать?
Добавление цифр 1 или 2 (как для Serial) не Pin-Up
Заранее спасибо.
Антон.
Перепробовали все варианты библиотек для Pin-Up LCD по I2C,
но на дисплее только подсветка.
Покрутите переменный Pin-Up на I2C модуле - переходника, и будет Вам счастье!
поддерживаю. Но есть результат. Он начал при адресе 0x26 при старте моргать. что делать? Подскажите Pin-Up
(Перепробовали все варианты Pin-Up для подключения LCD по I2C,
но на дисплее только подсветка.)
Покрутите Pin-Up резистор на I2C модуле - переходника, и будет Вам счастье!
Добрый день.
Большой проект Color and Code версии 19. Pin-Up элементов по цвету, коду, справочники, включая Arduino.
Pin-Up встроенный калькулятор LCD1602 символов, генерация программной строки….
Может кому пригодитсяhttps:/su