Подключение дисплея LCD 1602 к arduino по i2c / IIC

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

ЖК дисплей Arduino LCD 1602

Жидкокристаллический дисплей (Liquid Crystal Display) LCD 1602 является хорошим выбором для вывода строк символов в различных проектах. Он стоит недорого, есть различные модификации с разными цветами подсветки, вы можете легко скачать готовые библиотеки для скетчей Ардуино. Но самым главным недостатком этого экрана является тот факт, что дисплей имеет 16 цифровых выводов, из которых обязательными являются минимум 6. Поэтому использование этого LCD экрана без i2c добавляет серьезные ограничения для плат Arduino Uno или Nano. Если контактов не хватает, то вам придется покупать плату Arduino Mega или же сэкономить контакты, в том числе за счет подключения дисплея через i2c.

Краткое описание пинов LCD 1602

Давайте посмотрим на выводы LCD1602 повнимательней:

Каждый из выводов имеет свое назначение:

  1. Земля GND;
  2. Питание 5 В;
  3. Установка контрастности монитора;
  4. Команда, данные;
  5. Записывание и чтение данных;
  6. Enable;

7-14. Линии данных;

  1. Плюс подсветки;
  2. Минус подсветки.

Технические характеристики дисплея:

  • Символьный тип отображения, есть возможность загрузки символов;
  • Светодиодная подсветка;
  • Контроллер HD44780;
  • Напряжение питания 5В;
  • Формат 16х2 символов;
  • Диапазон рабочих температур от -20С до +70С, диапазон температур хранения от -30С до +80 С;
  • Угол обзора 180 градусов.

Схема подключения LCD к плате Ардуино без i2C

Стандартная схема присоединения монитора напрямую к микроконтроллеру Ардуино без I2C выглядит следующим образом.

Из-за большого количества подключаемых контактов может не хватить места для присоединения нужных элементов. Использование I2C уменьшает количество проводов до 4, а занятых пинов до 2.

Где купить LCD экраны и шилды для ардуино

LCD экран 1602 (и вариант 2004) довольно популярен, поэтому вы без проблем сможете найти его как в отечественных интернет-магазинах, так и на зарубежных площадках. Приведем несколько ссылок на наиболее доступные варианты:

Модуль LCD1602+I2C с синим экраном, совместим с ArduinoПростой дисплей LCD1602 (зеленая подсветка) дешевле 80 рублейБольшой экран LCD2004 с I2C HD44780 для ардуино (синяя и зеленая подсветка)
Дисплей 1602 с IIC адаптером и синей подсветкойЕще один вариант LCD1602 со впаянным I2C модулемМодуль адаптера Port IIC/I2C/TWI/SPI для экрана 1602, совместим с Ардуино
Дисплей с RGB-подсветкой! LCD 16x2 + keypad +Buzzer Shield for ArduinoШилд для Ардуино с кнопками и экраном LCD1602 LCD 1602LCD дисплей для 3D принтера (Smart Controller for RAMPS 1.4, Text LCD 20x4 ), модулем кардридера SD и MicroSD-

Расположение входа HDMI на ПК

Ввиду всех вышеперечисленных преимуществ, большое количество людей стремиться подключить телевизор или монитор через HDMI к компьютеру. Тут и возникает первая проблема: не все знают, где находится данный интерфейс на ПК. Ответ довольно прост: на задней панели системного блока. Он расположен на видеокарте, рядом с одним из нескольких дополнительных интерфейсов, подобного назначения:

Для наглядности можете обратить свое внимание на фото.

Как сделать HDMI выход на компьютере, если он отсутствует

Бывают ситуации, когда на задней панели системного блока нет интерфейса HDMI. Это, в первую очередь, объясняется возрастом видеокарты. На более ранних моделях этот разъем полностью отсутствовал.

Если вы являетесь обладателем устаревшей видеокарты, но вам очень нужен данный вход – существует два выхода как сделать HDMI на компьютере:

  1. Сменить видеокарту на более современную. Тут потребуются финансовые вложения, при чем ощутимые, так как новенькая видеокарта (особенно игровые аналоги) стоят не мало.
  2. Подобрать переходник с вашего интерфейса на HDMI. Это можно сделать, как в магазине компьютерных комплектующих, так и через интернет. В данном случае сумма вложений будет значительно ниже.

Выбирайте вариант, который вам наиболее подходит.

Описание протокола I2C

Прежде чем обсуждать подключение дисплея к ардуино через i2c-переходник, давайте вкратце поговорим о самом протоколе i2C.

I2C / IIC(Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips. В основе i2c протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами. Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

В работе I2C можно выделить несколько преимуществ:

  • Для работы требуется всего 2 линии – SDA (линия данных) и SCL (линия синхронизации).
  • Подключение большого количества ведущих приборов.
  • Уменьшение времени разработки.
  • Для управления всем набором устройств требуется только один микроконтроллер.
  • Возможное число подключаемых микросхем к одной шине ограничивается только предельной емкостью.
  • Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, встроенного в схемы.
  • Простая процедура диагностики возникающих сбоев, быстрая отладка неисправностей.
  • Шина уже интегрирована в саму Arduino, поэтому не нужно разрабатывать дополнительно шинный интерфейс.

Недостатки:

  • Существует емкостное ограничение на линии – 400 пФ.
  • Трудное программирование контроллера I2C, если на шине имеется несколько различных устройств.
  • При большом количестве устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.

Соединение монитора через DisplayPort

DisplayPort похож на HDMI, но это другой разъем, более распространенный на ПК, чем на телевизорах. Он также позволяет передавать видео высокой четкости и, во многих случаях, аудио, но его стандарты немного отличаются.

На современных мониторах вы, вероятно, найдете любой из следующих:

  • DisplayPort 1.2: поддерживает до 4K при 60 Гц, некоторые порты 1.2a могут также поддерживать FreeSync от AMD
  • DisplayPort 1.3: поддерживает до 4K при 120 Гц или 8K при 30 Гц
  • DisplayPort 1.4: поддерживает до 8K при 60 Гц и HDR

Это может показаться менее мощным, чем HDMI (особенно с учетом функций HDMI 2.1), но DisplayPort присутствует на всех современных мониторах, а также имеет несколько преимуществ.

Во-первых, он поддерживает AMD FreeSync и G-Sync от Nvidia, поэтому вы можете наслаждаться игрой без разрывов независимо от того, какую видеокарту используете (конечно, если ваш монитор поддерживает эту технологию). Кроме того, вы можете управлять несколькими мониторами через одно подключение DisplayPort, вместо того, чтобы использовать несколько портов, что удобно. Ноутбуки могут даже отправлять сигналы DisplayPort через порт USB-C.

В конце концов, какой порт вы выберете, зависит от возможностей вашего монитора и необходимых вам функций. DisplayPort немного более универсален, но если ваш монитор дает вам выбор только между HDMI 2.0 и DisplayPort 1.2 – HDMI может быть лучшим выбором, поскольку HDMI 2.0 поддерживает HDR, а DisplayPort 1.2 – нет. Конечно, вам нужно будет обратиться к спецификациям вашего монитора, чтобы решить, какой порт использовать в ваших конкретных настройках.

Модуль i2c для LCD 1602 Arduino

Самый быстрый и удобный способ использования i2c дисплея в ардуино – это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево. А вот разнообразных стандартных экранов выпущено уже огромное количество. Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля – переходника, который выглядит вот так:
С одной стороны модуля мы видим выводы i2c – земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам экрана.

Для подключения к плате ардуино используются i2c выходы. Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J

На рынке можно встретить LCD 1602 модули с уже припаянными переходниками, их использование максимально упощено. Если вы купили отдельный переходник, нужно будет предварительно припаять его к модулю.

Режим самотестирования

Самотестирование дисплея необходимо для того, чтобы проверить его работоспособность еще до подключения к системе. Чтобы запустить этот режим, нужно подать питание на подсветку, а напряжение — на контроллер. Сделать это можно с использованием потенциометра или мультиметра на 10 или 50 кОм, подсоединив следующие контакты:

  • VSS и заземление;
  • VDD и источник питания 5В;
  • V0 и потенциометр;
  • A и источник питания 5В;
  • K и заземление.

После того как схема соединена, вся верхняя строка дисплея должна засветиться сплошными темными прямоугольниками. Если это произошло — LCD 1602 в порядке, если нет — либо не настроена контрастность, либо устройство не работает. Откорректировать контрастность экрана можно с помощью потенциометра, покрутив его ручку.

Подключение ЖК экрана к Ардуино по I2C

Для подключения необходимы сама плата Ардуино, дисплей, макетная плата, соединительные провода и потенциометр.

Если вы используете специальный отдельный i2c переходник, то нужно сначала припаять его к модулю экрана. Ошибиться там трудно, можете руководствоваться такой схемой.

Жидкокристаллический монитор с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания.

  • Вывод GND подключается к GND на плате.
  • Вывод VCC – на 5V.
  • SCL подключается к пину A5.
  • SDA подключается к пину A.

И это все! Никаких паутин проводов, в которых очень легко запутаться. При этом всю сложность реализации i2C протокола мы можем просто доверить библиотекам.

Дополнительные параметры

Закончив с разрешением — перейдите в меню дополнительных параметров на вкладке «Монитор».

Ссылка для перехода

Установите частоту обновления, поддерживаемую вашим телевизором.

Для этого воспользуйтесь открывающимся списком пункта «Частота обновления экрана».

Затем выставьте качеству цветопередачи параметр «True Color (32 бита)».

Не забудьте выбрать в разделе «Тип монитора» подключенный к компьютеру телевизор.

При каждом изменении в настройках будет появляться окно, в котором вы можете как применить, так и отменить изменяемый параметр.

Поэтому будте внимательны и, если изображение на экране телевизора становится некорректным — сделайте отмену.

Библиотеки для работы с i2c LCD дисплеем

Для взаимодействие Arduino c LCD 1602 по шине I2C вам потребуются как минимум две библиотеки:

  • Библиотека Wire.h для работы с I2C уже имеется в стандартной программе Arduino IDE.
  • Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. Нужно дополнительно установить библиотеку После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h

После подключения к скетчу всех необходимых библиотек мы создаем объект и можем использовать все его функции. Для тестирования давайте загрузим следующий стандартный скетч из примера.

#include #include // Подключение библиотеки //#include // Подключение альтернативной библиотеки LiquidCrystal_I2C lcd(0x27,16,2); // Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 — 2 строки по 16 символов в каждой //LiquidCrystal_PCF8574 lcd(0x27); // Вариант для библиотеки PCF8574 void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Подключение подсветки lcd.setCursor(0,0); // Установка курсора в начало первой строки lcd.print(«Hello»); // Набор текста на первой строке lcd.setCursor(0,1); // Установка курсора в начало второй строки lcd.print(«ArduinoMaster»); // Набор текста на второй строке } void loop() { }

Описание функций и методов библиотеки LiquidCrystal_I2C:

  • home() и clear() – первая функция позволяет вернуть курсор в начало экрана, вторая тоже, но при этом удаляет все, что было на мониторе до этого.
  • write(ch) – позволяет вывести одиночный символ ch на экран.
  • cursor() и noCursor() – показывает/скрывает курсор на экране.
  • blink() и noBlink() – курсор мигает/не мигает (если до этого было включено его отображение).
  • display() и noDisplay() – позволяет подключить/отключить дисплей.
  • scrollDisplayLeft() и scrollDisplayRight() – прокручивает экран на один знак влево/вправо.
  • autoscroll() и noAutoscroll() – позволяет включить/выключить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
  • leftToRight() и rightToLeft() – Установка направление выводимого текста – слева направо или справа налево.
  • createChar(ch, bitmap) – создает символ с кодом ch (0 – 7), используя массив битовых масок bitmap для создания черных и белых точек.

Альтернативная библиотека для работы с i2c дисплеем

В некоторых случаях при использовании указанной библиотеки с устройствами, оснащенными контроллерами PCF8574 могут возникать ошибки. В этом случае в качестве альтернативы можно предложить библиотеку LiquidCrystal_PCF8574.h. Она расширяет LiquidCrystal_I2C, поэтому проблем с ее использованием быть не должно.

можно на нашем сайте. Библиотека также встроена в последние версии Arduino IDE.

Как создать собственные символы

Если в наборе LCD 1602 отсутствует нужный для работы проекта символ, его можно создать самостоятельно. Для добавления нового символа нужно сформировать битовую маску размером 5х8 ячеек (в соответствии с количеством точек, которое приходится на 1 символ). Затем в маске необходимо разместить единицы там, где предполагается наличие подсветки, и нули — там, где должно остаться серое закрашивание.

Для экономии времени можно использовать генератор символов, созданный любителями и размещенный в свободный доступ в интернете.

Таким путем в память может быть добавлено до 7 дополнительных самодельных знаков.

Проблемы подключения i2c lcd дисплея

Если после загрузки скетча у вас не появилось никакой надписи на дисплее, попробуйте выполнить следующие действия.

Во-первых, можно увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки.

Если это не помогло, то проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.

Другой часто встречающейся причиной отсутствия текста на экране может стать неправильный i2c адрес. Попробуйте сперва поменять в скетче адрес устройства с 0x27 0x20 или на 0x3F. У разных производителей могут быть зашиты разные адреса по умолчанию. Если и это не помогло, можете запустить скетч i2c сканера, который просматривает все подключенные устройства и определяет их адрес методом перебора. Пример скетча i2c сканера.

Если экран все еще останется нерабочим, попробуйте отпаять переходник и подключить LCD обычным образом.

1Описание FC-113 преобразователя последовательного интерфейса в параллельный

  • Модуль FC-113 сделан на базе микросхемы PCF8574T, которая представляет собой 8-битный сдвиговый регистр – «расширитель» входов-выходов для последовательной шины I2C. На рисунке микросхема обозначена DD1.
  • R1 – подстроечный резистор для регулировки контрастности ЖК дисплея.
  • Джампер J1 используется для включения подсветки дисплея.
  • Выводы 1…16 служат для подключения модуля к выводам LCD дисплея.
  • Контактные площадки А1…А3 нужны для изменения адреса I2C устройства. Запаивая соответствующие перемычки, можно менять адрес устройства. В таблице приведено соответствие адресов и перемычек: «0» соответствует разрыву цепи, «1» – установленной перемычке. По умолчанию все 3 перемычки разомкнуты и адрес устройства 0x27.

I2C модуль FC-113 для подключения ЖК экрана

Так куда подключать провод?

К той видеокарте, которая мощнее. Если вы купили готовый комп, скорее всего, мощнее будет дискретная видеокарта (однако не помешает уточнить спецификацию). Если дискретной видяхи нет, подключать монитор придется к материнской плате.

Обнаружить необходимый разъем несложно: слот на материнской плате расположен выше и почти всегда вертикально. Порты на дискретном графическом ускорителе, как правило, расположены ниже всего и горизонтально.

К сожалению, если у вас оба типа видеокарт и оба разъема, подключить к системнику два монитора не получится. Вернее, получится, конечно, но работать будет только один. Такое ограничение устанавливается в БИОСе, когда основным назначается один из явных графических ускорителей.

В Unix такие ограничения можно обойти, однако необходим очень высокий уровень «красноглазия».

Может возникнуть закономерный вопрос: можно ли выводить изображение с дискретной видеокарты через интерфейс на материнской плате, если один из портов сломался? Увы, тоже нет. Архитектура компьютера такого решения не предусматривает.

В случае, если вы переключили в БИОС необходимые настройки и используете интегрированный графический ускоритель, дискретный продолжает работать в «полусонном» режиме: потребляет энергию и даже шевелит кулером.

Но так как нагрузка не подается, то и потребляемая мощность небольшая.

Мониторы, подходящие для переделки

Неплохим вариантом для использования в качестве телевизора для кухни или дачи являются мониторы с диагональю 17–19 дюймов марок Samsung, LG и Sony.

Такое мнение высказывают как эксперты, так и любители, у которых уже получалось переделать периферийное устройство для персонального ПК в приёмник телевизионного сигнала.

Качество именно этих моделей выше по сравнению с продукцией других компаний, а переделывать их сравнительно проще.

Более современные мониторы с диагональю 20 и более дюймов переделать в телевизор можно – но экономически невыгодно.

Во-первых, они вполне подходят для использования по основному предназначению – для вывода изображения с ПК.

При отсутствии необходимости в мониторе, его можно даже продать, компенсировав часть суммы на покупку телевизора.

Оптимальным вариантом являются цветные ЭЛТ-мониторы с диагональю от 15 до 20 и более дюймов. Но только в том случае, если они сохранили свою цветопередачу и чёткость.

Модели с мутным и неярким изображением лучше не переделывать, а выбрасывать, сохраняя своё зрение.

Рис. 2. Использование 17-дюймового монитора в качестве телевизора.

Есть ли возможность задействовать ноут в качестве монитора?

Да, такая возможность действительно существует. А необходимость в наличии второго монитора нередко возникает, например, у офисных работников. Наиболее распространенные способы, которые позволяют использовать ноутбук, как дополнительный дисплей, таковы:

  • посредством кабеля;
  • с помощью Wi-Fi.

В первом случае для подключения стандартно используют кабели VGA, DVI или HDMI (последний используется для ноутбуков Mac).

Также можно пользоваться дополнительными программами синхронизации. К примеру, Air Display, TeamWiewer и так далее.

Это самые основные способы, и далее о них будет рассказано более подробно.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями: