Подключение I2C дисплея к ардуино. Русификация текста.

Подключение 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 не стандартных букв.
Ну вот вроде всё что хотел рассказал. Если вам понравилось это видео и вы хотите и дальше смотреть интересные видео, то пишите комментарии, ставьте лайки, размещайте и делитесь моими видео. Это очень мне поможет.
 


Примеры подключения и использования LCD дисплей 1602 и 2004
Подключение дисплея 1602 lcd i2c. 1602 ардуино дисплей
Простой таймер на Ардуино с реле и обратным отсчётом
Игры на Ардуино с дисплеем LCD 1602
Подключение I2C дисплея к ардуино. Русификация текста.
Модуль rfid rc522 идентификация. Карта rfid пропуск
Уроки ардуино Простой калькулятор
Температура процессора и видеокарты, их частота и загруженность.
rfid система. LCD дисплей 1602. Русификация
rfid идентификация. Учёт посещаемости Время прихода и ухода
LCD Дисплей 1602 и 2004: Проекты и Подключение к Arduino