Текстовый экран 16×2 / I²C: инструкция по подключению и примеры использования
Текстовый экран 16×2 / I²C пригодится для вывода показаний датчиков, отображения простых меню, подсказок и приветствий.
Видеообзор
Примеры работы для Arduino
В качестве примера подключим дисплей к управляющей плате Arduino Uno.
Подключение к Arduino
Вывод | Обозначение | Пин Arduino Uno |
---|---|---|
1 | GND | GND |
2 | VCC | 5V |
3 | VO | GND |
17 | SDA | SDA |
18 | SCL | SCL |
Для упрощения работы с LCD-дисплеем используйте встроенную библиотеку Библиотека для Arduino «Liquid Crystal I²C». В ней вы найдёте примеры кода с подробными комментариями.
Вывод текста
Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:
Кириллица
Существует способ вывода кириллицы на текстовые дисплеи с помощью таблицы знакогенератора.
Таблица знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.
Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.
Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:
Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x , он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0-9 и A-F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.
Сравните две строки кода для вывода надписи «Яeee»:
Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:
Переключение страниц знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения между страницами используйте методы:
Дисплей не может одновременно отображать символы разных страниц.
Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.
Подключение нескольких дисплеев
Используя шину I²C можно подключить несколько дисплеев одновременно, при этом количество занятых пинов останется прежним. Подробнее читайте в нашей документации.
После физического смены адреса экрана, подключите дополнительный дисплей параллельно к пинам I²C , а в коде программы инициализируйте работу с двумя дисплеями.
Примеры работы для Espruino
В качестве примера подключим дисплей к управляющей плате Iskra JS.
Подключение к Iskra JS
Вывод | Обозначение | Пин Iskra JS |
---|---|---|
1 | GND | GND |
2 | VCC | 5V |
3 | VO | GND |
17 | SDA | SDA |
18 | SCL | SCL |
Для работы с LCD-дисплеем из среды Espruino существует библиотека HD44780.
Вывод текста
Для вывода программы приветствия, воспользуйтесь скриптом:
Кириллица
Вывод кирилицы на дисплей с помощью платформы Iskra JS доступен через встроенную в дисплей таблицу знакогенератора.
Таблица знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.
Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.
Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:
Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x , он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0–9 и A–F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.
Сравните две строки кода для вывода надписи «Яeee»:
Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:
Переключение страниц знакогенератора
Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения между страницами используйте методы:
Дисплей не может одновременно отображать символы разных страниц.
Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.
Подключение нескольких дисплеев
Используя шину I²C можно подключить несколько дисплеев одновременно, при этом количество занятых пинов останется прежним. Подробнее читайте в нашей документации.
После физического смены адреса экрана, подключите дополнительный дисплей параллельно к пинам I²C , а в коде программы инициализируйте работу с двумя дисплеями.
Комнатный термометр
Дисплей удобен для отображения показаний модулей и сенсоров. Сделаем задатки «Умного Дома», а именно «комнатный термометр».
Подключение I2C дисплея к ардуино. Русификация текста.
Сегодня вы узнаете про подключение I2C дисплея к Ардуино, а точнее как сделать из простого LCD1602 i2c дисплей используя модуль I2C. А ещё как изменять адрес на шине I2C, как выводить русский(кириллицу) шрифт и многое другое.
Это история о том, как был у меня дисплей LCD 2004 и подключался он напрямую, то есть аж 8 проводами и надоело мне это сильно. И решил я упростить себе и надеюсь и вам тоже работу и купил в Китае модуль-адаптер I2C .
I2C адаптер — это преобразователь интерфейсов обеспечивающий обмен между параллельной шиной LCD и шиной I2C. И вместо 8 контактов на Ардуино вам понадобится всего 2, а к самой шине I2C можно подключить огромное число различных устройств.
Разницу можно видеть невооружённым взглядом.
Так что же такое I2C.
I2C — это последовательный протокол обмена данными. Для передачи данных используются 2 линии связи.
SDA (Serial Data) — шина последовательных данных и
SCL (Serial Clock). — шина тактирования.
Шины Управляются низким сигналом, поэтому они должны быть подтянуты к шине питания через резисторы которые обычно уже припаяны к модулям I2C. Но при использовании нескольких модулей могут быть проблемы если у каждого модуля есть подтягивающие резисторы то их надо выпаять и оставить всего по одному резистору.
Должно быть хотя бы одно ведущее устройство и до 127 ведомых. Обычно в качестве ведущего используют Ардуино.
У каждого ведомого должен быть свой уникальный адрес по которому к нему будет обращаться ведущий.
Адрес адаптера хранится в энергонезависимой памяти и он установлен производителем, но если вы захотите подключить несколько I2C устройств, а их можно подключить аж 127 штук, у вас могут попасться устройства с одинаковыми адресами. на этом модуле вы сможете изменить адрес. Как это сделать я расскажу дальше в видео.
Теперь что мы имеем. У нас есть простой дисплей на 20 символов и 4 строчки с подпаянными 16 контактами. И есть модуль адаптер I2C так же с подпаянными 16 контактами.
Нам нужно соединить все контакты на модуле с контактами на дисплее. Они расположены так, что вам ничего не надо выдумывать, а просто выпаять штырьки на дисплее и вставить в освободившееся место контакты с адаптера.
Если вы не любите или не хотите паять, то можно воспользоваться макетной платой и вставить дисплей и адаптер соединив первый и последующие выводы.
Вот и всё устройство готово и может уже работать., Но я всё же пойду припаяю, так как это более надёжно и мне так больше нравится. Так что подождите, это не долго. Ну вот и всё.
Как видите, ничего сложного в замене штырьков на адаптер нет. Я просто выпаял их и вместо них запаял I2C адаптер. И теперь вместо сборки целой схемы и кучи проводов мне надо будет подключить всего 2 провода, а куда и как я покажу чуть позже.
Давайте посмотрим какой у вас адрес на шине I2C прошитый в память, и какие ещё есть адреса, на которые можно заменить стандартный.
Для начала надо загрузить I2C сканер посмотреть какие устройства у вас подключены в данный момент и на каких адресах они находятся. Все адреса указаны в шестнадцатеричной системе счисления.
Рассмотрим работу скетча Сканер I2C.
Сканер прослушивает все адреса и если будет найдено устройство подключённое к шине I2C то в монитор порта будет выведен адрес устройства который нужно запомнить и затем ввести в код для правильной работы с этим устройством.
У меня сейчас подключено только дисплей, поэтому сканер нашёл только его. Как можно видеть, дисплей определился по адресу 027
Теперь давайте изменим адрес на другой. Для этого на модуле есть три пары контактных площадок которые нужно замкнуть и тогда у вас изменится адрес. Всего возможно сменить до 4 адресов.
Сначала замыкаем первую пару контактов и видим, что адрес изменился на 026. Если убрать перемычку, то адрес снова станет 027.
Я специально в скетче сделал задержку в 5 секунд, чтобы было проще видеть изменения.
Теперь замкнём вторую пару. Адрес изменился на 025. Отпускаем и он снова стал 027.
Ну и у нас осталась третья пара. Вы наверное думаете что по логике адрес должен быть 024. А вот и нет. Адрес стал 023. Почему так я не знаю. Кто знает напишите. А может просто так захотел производитель дисплея.
Теперь, что мы имеем.
Мы можем обратиться к нашему дисплею по адресам, 027, 026, 025, 023. Так что если у вас какое-то устройство будет на одном из этих адресов, вы сможете изменить его и у вас не будет конфликтов.
Продолжаем дальше.
Если вам что-то не понятно или вы захотите получить больше информации о прямом подключении или о подключении по шине I2C. Как протестировать дисплей на наличие или отсутствии русского шрифта. Узнать что такое таблица знакогенератора или хотите научиться создавать свои символы и выводить их на экран, то посмотрите это видео и вам всё сразу станет понятно.
LCD дисплей очень часто применяются для вывода информации, поэтому вам нужно лучше изучить их работу, а помогут вам в этом эти примеры. На канале есть и другие, это всего лишь часть из них, но даже этого вполне видно как можно применять дисплей.
А мы идём дальше.
Теперь давайте что-нибудь выведем на экран используя I2C, ведь для этого мы и проделали столько работы.
Для начала работы нужно установить библиотеку LiquidCrystal_I2C. Как добавлять библиотеки мы уже много раз рассматривали. Если вы не знаете, то посмотрите предыдущие видео, там я подробно рассказывал как это делать. Загрузим скетч из архива.
Здесь указываем адрес устройства которое определил сканер. И какой у вас дисплей. 16 или 20 знаков.
Здесь мы инициализируем дисплей.
Включаем на нём подсветку.
Устанавливаем курсор на то знакоместо экрана с которого хотим начать печатать текст. Устанавливаем нужную строку. Отсчёт ведётся с 0.
Выводим текст. Перемещаем курсор на 2 строку.
Выводим другую надпись. И так далее.
Прошиваем контроллер и смотрим результат. Мы видим, что обе надписи вывелись на экран и именно там где мы и хотели.
Теперь усложним задачу. Выведем текст кириллицей. И не важно поддерживает ваш дисплей кириллицу или нет, вам поможет вот эта библиотека LCD 16 02 RUS ALL
По моему мнению – это самая лучшая библиотека для вывода кириллицы на экран. Она работает с разными дисплеями с 16 и 20 символами и с подключением по I2C и прямым подключением.
Выводить будем алфавит. Мне писали, что не все символы в библиотеке показываются правильно. Вот сейчас и проверим. Я буду выводить по 10 букв в строку, сначала заглавными буквами, а потом прописными. Для лучшего восприятия, я сделал паузы в 5 секунд между выводом строк.
Как я уже неоднократно говорил, вы не можете одновременно вывести больше 8 своих символов, а каждая буква, отличающаяся по начертанию от латинской — это свой символ. Избежать этого можно очисткой экрана. Главное, чтобы одновременно на экране не было больше 8 не стандартных букв.
Ну вот вроде всё что хотел рассказал. Если вам понравилось это видео и вы хотите и дальше смотреть интересные видео, то пишите комментарии, ставьте лайки, размещайте и делитесь моими видео. Это очень мне поможет.