Lcd 1602 подключение к ардуино по i2c

Lcd 1602 подключение к ардуино по i2c

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

Данный экран оснащен дополнительной платой IIC/I2C интерфейса (последовательный интерфейс), позволяющей работать с микроконтроллерами с помощью всего двух проводов (без учета проводов питания). О наличии последовательного интерфейса в данном экране нам говорят символы IIC/I2C в его названии, а сама плата последовательного интерфейса с обратной стороны экрана выглядит следующим образом.

На плате IIC/I2C интерфейса мы видим установленный потенциометр для настройки контрастности экрана. После подключения дисплея просто подкрутите его отверткой, чтобы появилось изображение на экране. Джампер подсветки экрана позволяет во время работы отключить вручную подсветку дисплея.

Подключим дисплей к плате Arduino Mega 2560.

Все довольно просто. Сначала подключаем питание. Пин GND дисплея соединяем с пином GND платы Ардуино. Пин VCC дисплея соединяем с пином 5V платы Ардуино. После чего подключаем провода управляющие дисплеем. Пин SDA дисплея соединяем с пином 20 SDA платы Arduino Mega 2560. Пин SCL дисплея соединяем с пином 21 SCL платы Arduino Mega 2560. Все пины на IIC/I2C интерфейсе и на плате Arduino Mega 2560 подписаны соответствующим образом, поэтому проблем с подключением на этом этапе не должно возникать.

*Если вы используете плату Arduino UNO, подключайте пин SDA дисплея к пину A4 платы Arduino UNO, а пин SCL дисплея подключайте к пину A5 платы Arduino UNO.

Для работы с дисплеем LCD1602 IIC/I2C необходимо скачать и установить библиотеку LiquidCrystal_I2C. Напишем теперь минимально необходимый скетч для запуска дисплея.

Минимальный скетч который выводит в середине верхней строки символы VoltOM.RU. Все очень просто. Когда вам необходимо будет выводить показания датчиков на дисплей, просто в строке lcd.print(«VoltOM.RU»); подставляете вместо «VoltOM.RU» имя переменной, которой будут передаваться показания датчика. Когда вы разберетесь с показаниями каких-либо датчиков, особых вопросов как их вывести на экран дисплея у вас не должно возникнуть. А сейчас давайте немного закрепим тему и добавим несколько строк в наш скетч, чтобы под надписью VoltOM.RU сделать секундомер.

Заливаем скетч и видим как под надписью VoltOM.RU на экране дисплея тикает секундомер.

Вроде все минимально необходимое для начала работы с дисплеем LCD1602 IIC/I2C мы разобрали. Стоит обратить ещё внимание на возможные проблемы, которые могут возникнуть у вас при первом знакомстве с этими дисплеями.

Возможные проблемы при подключении дисплея LCD1602 IIC/I2C:

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

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

3. Обратите внимание на строку LiquidCrystal_I2C lcd(0x3F,16,2); в начале кода. I2C интерфейсы у разных дисплеев могут иметь разные адреса. Возможно, в вашем дисплее будет адрес 0x27, тогда строка будет выглядеть так: LiquidCrystal_I2C lcd(0x27,16,2);, то есть просто меняете 0x3F на 0x27. Если ни один из этих адресов не подошел, необходимо будет запустить сканер I2C интерфейса с помощью следующего скетча.

Код взят с сайта http://blog.jacobean.net/?p=653, разбирать мы его не будем. Наша задача просто залить его и открыть монитор порта. В котором мы должны будем увидеть строки:

Где 0x3F — (может быть другой) адрес вашего интерфейса. Его мы и должны вставлять в наших скетчах в строке LiquidCrystal_I2C lcd(0x3F,16,2);

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

Как подключить LCD дисплей с I2C модулем к Arduino

В статье будем подключать к Ардуино жидкокристаллический дисплей 1602 с I2C модулем FC-113, благодаря чему подключение будет осуществляться всего по 2 проводам данных + 2 проводам питания.

Инструкция по подключению ЖК дисплея к Arduino по интерфейсу I 2 C

Нам понадобится:

  • Arduino UNO или иная совместимая плата;
  • ЖК экран 1602 (16 символов, 2 строки);
  • I2C адаптер FC-113 или аналогичный;
  • соединительные провода (рекомендую вот такой набор);
  • макетная плата (breadboard);
  • персональный компьютер со средой разработки Arduino IDE.

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

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

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

2 Схема подключения ЖК дисплея к Arduinoпо протоколу I2C

Подключение модуля к Arduino осуществляется стандартно для шины I2C: вывод SDA модуля подключается к аналоговому порту A4, вывод SCL – к аналоговому порту A5 Ардуино. Питание модуля осуществляется напряжением +5 В от Arduino. Сам модуль соединяется выводами 1…16 с соответствующими выводами 1…16 на ЖК дисплее.

Схема подключения ЖК дисплея к Arduino по протоколу I2C

3 Библиотека для работы по протоколу I2C

Теперь нужна библиотека для работы с LCD по интерфейсу I2C. Можно воспользоваться, например, вот этой (ссылка в строке «Download Sample code and library»). Библиотека для работы по протоколу I2C

Скачанный архив LiquidCrystal_I2Cv1-1.rar разархивируем в папку libraries, которая находится в директории Arduino IDE.

Читать еще:  Plans ru проекты домов бесплатно с расчетами

Библиотека поддерживает набор стандартных функций для LCD экранов:

4 Скетч для вывода текста на LCD экран по шине I2C

Откроем образец: Файл Образцы LiquidCrystal_I2C CustomChars и немного его переделаем. Выведем сообщение, в конце которого будет находиться мигающий символ. В комментариях к коду прокомментированы все нюансы скетча.

Кстати, символы, записанные командой lcd.createChar();, остаются в памяти дисплея даже после выключения питания, т.к. записываются в ПЗУ дисплея 1602.

5 Создание собственных символов для ЖК дисплея

Немного подробнее рассмотрим вопрос создания собственных символов для ЖК экранов. Каждый символ на экране состоит из 35-ти точек: 5 в ширину и 7 в высоту (+1 резервная строка для подчёркивания). В строке 6 приведённого скетча мы задаём массив из 7-ми чисел: . Преобразуем 16-ричные числа в бинарные: . Эти числа – не что иное, как битовые маски для каждой из 7-ми строк символа, где «0» обозначают светлую точку, а «1» – тёмную. Например, символ сердца, заданный в виде битовой маски, будет выглядеть на экране так, как показано на рисунке.

Создание собственного символа для LCD экрана

6 Управление ЖК экраном по шине I2C

Загрузим скетч в Arduino. На экране появится заданная нами надпись с мигающим курсором в конце.

Управление ЖК экраном с помощью Arduino по шине I2C

7 Что находится «за» шиной I2C

В качестве бонуса рассмотрим временную диаграмму вывода латинских символов «A», «B» и «С» на ЖК дисплей. Эти символы имеются в ПЗУ дисплея и выводятся на экран просто передачей дисплею их адреса. Диаграмма снята с выводов RS, RW, E, D4, D5, D6 и D7 дисплея, т.е. уже после преобразователя FC-113 «I2C параллельная шина». Можно сказать, что мы погружаемся немного «глубже» в «железо».

Временная диаграмма вывода латинских символов «A», «B» и «С» на LCD дисплей 1602

И ещё один пример. На этой временной диаграмме показан вывод символа «Сердце» на ЖК дисплей.

Временная диаграмма вывода символа «Сердце» из ПЗУ на ЖК дисплей 1602

Опять, первые два импульса Enable соответствуют инструкции Home() (0000 00102) – возврат каретки на позицию (0; 0), а вторые два – вывод на ЖК дисплей хранящийся в ячейке памяти 310 (0000 00112) символ «Сердце» (инструкция lcd.createChar(3, heart); скетча).

Скачать LCD 1602 datasheet

Поделиться

Похожие материалы (по тегу)

Последнее от .aave.

Другие материалы в этой категории:

6 комментарии

А что делать если у тебя загорелись H░░░░░░░░░░░░░░░
░♥░░░░░░░░░░░░▓░
░ — Ничего
▓ — Недокурсор
█ — Курсор

помогите в проблеме: W7
юзал с версиями софтвера ардуино 1.05; 1.6.13; 1.8.3 и разными версиями библиотек
дисплея по I2C. Возникла проблема: не могу раскопать откуда, при переустановке, софт берет устанавливаемые вручную библиотеки? Чистил и создаваемую папку «ардуино» в доках и скрытый app, прошелся по системе клинером (после удаления софта). Но устанавливаю любую версию через установщик и снова в списке библиотек стоят ранее установленные. Поведение софта странное, из установленных библиотек берет команды кривой и работает по её правилу, даже примеры других из библиотек дисплея обрабатывает по выбранной «кривой». В меню софта почему то отсутствует простое удаление или замена библиотек.
Подскажите, как удалить библиотеки? откуда он их хватает?
Вчера, эти библиотеки прописывались в папке «ардуино» > «Документы». Указывал зип файл библиотеки и она устанавливалась в папку «ардуино». Затем появлялась в меню софта. Удалял созданную библиотеку и она исчезала из меню софта. Все красиво. Не пошла > стер > переустановил. Сегодня ничего не могу сделать. При старте софта и переустановке все библиотеки всплывают и + открывается последний создаваемый скетч даже на переустановленном софте любого релиза.

Я стараюсь использовать портабельные версии, которые не устанавливаются и нигде в системе не прописываются. Тогда и проблем таких не возникает. Попробовал с тремя обозначенными версиями — у меня повторить такую ошибку у себя не получилось.
Поэтому могу лишь порекомендовать воспользоваться бесплатным инструментом Process Monitor от Марка Руссиновича. Эта программа показывает, в том числе, все обращения заданной программы к файловой системе компьютера. Так вы сможете проследить, откуда всё же загружаются библиотеки.

Подскажите пожалуйста как изменить пины A4 и A5 на другие,например на A2 и A3 при работе дисплея 1602 через i2C. Это можно сделать в библиотеке или в скетче!?

Дело в том, что A4 и A5 — это выводы, которые аппаратно реализуют интерфейс I2C в Arduino. Если хотите использовать другие выводы, Вы можете написать свою программную реализацию интерфейса I2C или воспользоваться готовой, например, этой: https://github.com/adafruit/Adafruit_Trellis_Library

Большой проект Color and Code версии 19. Определение элементов по цвету, коду, справочники, включая Arduino.

Есть встроенный калькулятор LCD1602 символов, генерация программной строки.

Подключение дисплея 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. Линии данных;

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  100 Причин с днем рождения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Описание функций и методов библиотеки 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.

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

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

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

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

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

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

Заключение

В этой статье мы рассмотрели основные вопросы использования LCD экрана в сложных проектах ардуино, когда нам нужно экономить свободные пины на плате. Простой и недорогой переходник i2c позволит подключить LCD экран 1602, занимая всего 2 аналоговых пина. Во многих ситуациях это может быть очень важным. Плата за удобство – необходимость в использовании дополнительного модуля – конвертера и библиотеки. На наш взгляд, совсем не высокая цена за удобство и мы крайне рекомендуем использовать эту возможность в проектах.

Подключение ЖК дисплея LCD1602 к Arduino

При проектировании устройств на базе Arduino и отладке программной части зачастую удобно пользоваться «Монитором порта», встроенным в среду разработки Arduino IDE. В «Монитор порта» можно выводить всевозможную информацию: показания датчиков, значения переменных, информационные сообщения и т. п. При сборке готового устройства приходиться задумываться об устройствах индикации и вывода информации. В первую очередь для возможности автономного использования устройства и конечно для придания законченного вида своему творению. Проще всего для вывода информации использовать различные дисплеи, ведь они для того и созданы. Для несложных проектов идеальным решением будут дисплеи серии LCD1602. Эти небольшие дисплеи очень часто встречаются в электронных самоделках. Но можно их встретить и в промышленных образцах. Давайте узнаем о них побольше, попробуем их подключить и вывести на экран какое-нибудь сообщение.

Немного технических сведений: символы будут выводиться на жидкокристаллический дисплей в 2 ряда по 16 символов. Отсюда и название LCD1602. В память встроено 192 знака размером 5 на 8 точек. Еще 8 знаков может определить сам пользователь. Стоит учитывать, что в большинстве модулей нет поддержки русского алфавита, но эту проблему решить довольно просто, используя расширенные библиотеки.

Так выглядит модуль LCD1602 сверху:

А это фото с другой стороны:

LCD1602 подключается к Arduino «ужасно» просто. Посмотрите на рисунок ниже и убедитесь в этом сами.

Всего-то 12 проводов плюс один переменный резистор для регулировки контрастности. В итоге задействовано целых 6 портов ввода-вывода Arduino, не считая выходов питания. Кому как, но где же обещанная простота? А упростить схему можно, если совместно с модулем дисплея мы будем использовать модуль конвертера I2C.

Протокол I2C позволяет подключать одновременно до 127 устройств, используя минимум проводов. Можно провести аналогию с протоколом USB. По нему также можно подключить большое количество устройств использую систему usb-хабов.

Модуль, с помощью гребёнки, необходимо спаять с платой дисплея таким образом, чтобы 4 вывода модуля находились ближе к краю дисплея, а не к центру Теперь для подключения понадобится всего 4 провода.

Читать еще:  Алиса помоги пожалуйста решить задачу

Вот это уже намного проще и удобнее. Следует учесть, что при использования протокола I2C используются аналоговые порты A4 и A5 (для Arduino UNO и NANO). Для Arduino Mega2560 и Due будут использоваться порты 20 и 21. Для других плат смотрите документацию.

К порту арудинки А4 подключается вывод, обозначенные на модуле SDA. К порту А5 — SCL. Питание подключается как обычно.

ВНИМАНИЕ! Всегда проверяйте подключение. Ваш модуль и модуль на схемах не всегда имеют одинаковую распиновку.

Вернемся к протоколу I2C. Число одновременно подключенных устройств большое, сигнальных проводов всего 2. Как Arduino узнает, с каким устройством она должна работать? Всё просто, у каждого устройства имеется свой адрес, и этот адрес передается вместе с определенной командой. А где взять адрес для наших дисплеев?

Необходимо написать небольшой код, с помощью которого ардуинка будет опрашивать все подключенные устройства и узнавать их адрес. Вот этот код:

Подключаем экран, заливаем наш скетч в Arduino, подключаемся к мониторингу порта, и, в случае успеха, увидим следующую картину:

Видим, что одно устройство найдено. Запоминаем адрес. А лучше запишите его на скотче и приклейте на модуль дисплея. Обратите внимание, что мы получили адрес не самого дисплея, а адрес I2C конвертера, через который мы дисплей подключаем При необходимости адрес конвертера можно изменять путем впаивания перемычек на контакты A0, A1, A2 конвертера, но об этом ниже.

Вот теперь мы можем попробовать вывести какое-нибудь сообщение на наш маленький экранчик.

Опять же, код минимальный, не забываем про библиотеку LiquidCrystal_I2C.h

Заливаем скетч в плату и, если всё хорошо, то должна появиться надпись «Hello, world!” в первой строке и «That is me.” во второй. Если строки не появились, а экран темный, то, скорее всего, необходимо отрегулировать контрастность. Переворачиваем сдвоенный модуль. Увидим следующую картину:

Нам интересен переменный резистор: синий пластмассовый кубик, а в нем крест. На фото в правом верхнем углу. Обведён красным. Покрутите его отверткой и добейтесь приемлемого уровня яркости экрана. Ну и все контакты стоит проверить. Раз уже мы смотрим на обратную сторону сдвоенного модуля, то еще два момента.

  1. Джампер слева — позволяет отключить подсветку.
  2. Площадка из 6 контактов A0, A1, A2 — позволяет изменить адрес модуля I2C. Для смены адреса необходимо впаять перемычку, соединив контакты любого вертикального ряда. Комбинировав перемычки можно получить 8 разных адресов. Нужда в этом возникает, когда есть конфликт адресов. К примеру, вы подключаете 2 и больше экрана. Чаще всего они будут иметь один адрес. Сменив адрес, мы решим это проблему. После получения нового адреса необходимо будет заново пересканировать адреса для получения нового. Кстати, все экраны необходимо подключать параллельно друг другу. При этом не важно: сколько подключено модулей: один, два или три. Задействовано будут всего два порта ардуино, и два порта питания. В этом огромное удобство I2C. Надеюсь, всё было понятно.

На этом наша статья подходит к концу. Всем удачного программирования и изучения Arduino!

Подключение LCD к Ардуино плате

Статья рассказывает о том, как правильно подключить LCD к Arduino, рассмотрено всё необходимое про подключение LCD 1602 и LCD i2c.

Шаг 1. О проекте

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

Неудивительно, что их можно увидеть как в простых, собранных буквально на коленке агрегатах, так и в более серьезных промышленных, например автоматах для приготовления кофе. Именно с таким дисплеем и собираются наиболее популярные модули и шилды по тематике Arduino, например LCD I2C модуль и LCD Keypad Shield.

В следующих шагах подробно с изображениями рассказываем как подключить LCD к Arduino и отобразить на дисплее нужную информацию.

Шаг 2. LCD-дисплей 1602 для Ардуино

Дисплеи 1602 имеют два различных исполнения:

  • жёлтая подсветка с чёрными буквами
  • либо (это бывает гораздо чаще) синяя подсветка с белыми.

Размерность дисплеев на HD44780 контроллере бывает самой разной, а управляются они одинаково. Наиболее распространённые из размерностей – 16 на 02 (то есть по 16 символов в двух строках) или 20 на 04. Сами же символы имеют разрешение в 5 на 8 точек.

Большая часть дисплеев не поддерживает кириллицу (за исключением дисплеев CTK-маркировки). Но такая проблема частично решаема, и далее статья подробно рассказывает, как это сделать.

На дисплее есть 16-PIN разъём для подключения. Выводы имеют маркировку с тыльной стороны платы, она следующая:

  • 1 (VSS) – питание на минус для контроллера.
  • 2 (VDD) – питание на плюс для контроллера.
  • 3 (VO) – настройки управления контрастом.
  • 4 (RS) – выбор для регистра.
  • 5 (R/W) – чтение и запись, в частности, запись при соединении с землёй.
  • 6 (E) – активация (enable).
  • 7–10 (DB0-DB3) – младшие биты от восьмибитного интерфейса.
  • 11–14 (DB4-DB7) – старшие биты от интерфейса
  • 15 (A) – положительный анод на питание подсветки.
  • 16 (K) – отрицательный катод на питание подсветки.

Шаг 3. Подключаем ЖК-дисплей

Перед тем как подключать дисплей и передавать на него информацию, стоит проверить его работоспособность. Сперва подайте напряжение на VSS и VDD контроллер, запитайте подсветку (A, K), далее настройте контрастность.

Для таких настроек подойдёт потенциометр с 10 кОм, форма его не важна. На крайние ноги подают +5V и GND, а ножку по центру соединяют с VO выводом.

Когда на схему подаётся питание, нужно добиться необходимого контраста, если он настраивается неправильно, то и изображение на экране видно не будет. Чтобы настроить контраст, нужно «поиграть» с потенциометром. Когда схема будет собрана правильно и контраст настроен верно, верхняя строка на экране должна заполниться прямоугольниками.

Чтобы дисплей работал, применяется встроенная в Arduino IDE среду специальная библиотека LiquidCrystal.h, о которой я напишу ниже. Он может действовать в 8-битном и в 4-битном режиме. В первом варианте применяют лишь младшие и старшие биты (BB0-DB7), во втором – только младшие (BB4-DB7).

Но применение 8-битного режима в этом дисплее – неправильное решение, преимущества в скорости почти нет, поскольку частота обновления у него всегда меньше 10 раз за секунду. Чтобы выводился текст, надо присоединить выводы DB7, DB6, DB5, DB4, E и RS к выводам контроллера. Присоединять их допустимо к любым пинам Arduino, главное – задание верной последовательности в коде.

Если необходимого символа пока что нет в памяти контроллера, то можно его определить вручную (всего до семи символов). Ячейка в рассматриваемых дисплеях имеет расширение в пять на восемь точек. Задача создания символа в том, чтобы написать битовую маску и расставить единички в местах, где точки должны гореть, а нолики – где не должны. Рассмотренная выше схема подключения не всегда хороша, т. к. на Arduino занимается минимум шесть цифровых выходов.

Шаг 4. Схема обхода

Изучим вариант, как обойти это и обойтись только двумя. Нужен добавочный модуль-конвертор для LCD в IIC/I2C. Как он припаивается к дисплею и присоединяется к Arduino, можно увидеть на изображениях ниже.

Но такой вариант подключения действует лишь со специальной библиотекой LiquidCrystal_I2C1602V1, которую, впрочем, нетрудно найти в Сети и установить, после чего можно без проблем им пользоваться.

Шаг 4: Библиотека LiquidCrystal.h

Библиотеку LiquidCrystal.h можно скачать в разделе Библиотек нашего сайта на этой странице или с официального ресурса arduino.cc. Но также вы можете скачать ниже по ссылкам:

Шаг 5. Скетч (код программы)

После того, как вы скачали архив замените папку LiquidCrystal в папке с библиотеками вашего каталога установки Arduino.

Вы можете увидеть примерный скетч по адресу:

Файл -> Примеры -> LiquidCrystal -> HelloWorld_SPI

Либо, если у вас меню на английском:

File -> Examples -> LiquidCrystal -> HelloWorld_SPI

На этом наш очередной урок завершен. Желаем вам качественных проектов!

Ссылка на основную публикацию
Adblock
detector