Найти в Дзене
АЛьТернатива

Как подключить LCD дисплей к ARDUINO (Ардуино) и вывести текст по Русски!

Приветствую тебя Читатель! Сегодня я расскажу, как легко и просто подключить к ардуинке LCD дисплей 1602А через плату расширения I2C и вывести русские текст без "геморроя". Разберёмся с непонятными словами и моментами: LCD дисплей 1602А - плата с символьным ЖК (LCD) дисплеем. Питание платы 5 В.. Существуют иные модели аналогичных плат, например 2004. По сути они различаются лишь количеством символов в строке и количеством строк, в 1602 символов 16 и две строки, а в модели 2004 соответственно 20 символов и 4 строки. Для любителей паять рекомендую не заморачиваться с подключением каждого вывода к ардуинке, а лучше припаяйте плату расширения. Её контакты полностью повторяют контактную группу на LCD 1602A. Должен отметить, что китайцы уже выпускают платы экранов к которым припаяны платы расширения и уже загружен русский язык в память экрана.
плата расширения i2c
I2C - Это протокол для связи микросхем внутри электронного устройства, на основе 8 битной шины. У каждого устройства в схеме i

Приветствую тебя Читатель!

Сегодня я расскажу, как легко и просто подключить к ардуинке LCD дисплей 1602А через плату расширения I2C и вывести русские текст без "геморроя".

Разберёмся с непонятными словами и моментами:

LCD 1602A
LCD 1602A

LCD дисплей 1602А - плата с символьным ЖК (LCD) дисплеем. Питание платы 5 В.. Существуют иные модели аналогичных плат, например 2004. По сути они различаются лишь количеством символов в строке и количеством строк, в 1602 символов 16 и две строки, а в модели 2004 соответственно 20 символов и 4 строки.

Контакты на плате LCD 1602A
Контакты на плате LCD 1602A

Для любителей паять рекомендую не заморачиваться с подключением каждого вывода к ардуинке, а лучше припаяйте плату расширения. Её контакты полностью повторяют контактную группу на LCD 1602A.

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


плата расширения i2c для дисплея LCD 1602A
плата расширения i2c для дисплея LCD 1602A

плата расширения i2c
I2C
- Это протокол для связи микросхем внутри электронного устройства, на основе 8 битной шины. У каждого устройства в схеме i2c должен быть свой уникальный адрес, всего может быть до 127 устройств. На платах Ардуино и прочих подключаемых платах использующих i2c существует два контакта по которым передаются данные SDA (линия передачи данных) и SCL (линия синхронизации). Так-же Выбирается одно мастер устройство которое будет управлять другими.
Плата I2C позволит соединить нашу ардуинку с экраном буквально по двум проводам. Конечно нам нужно будет ещё и питание подать, так что в итоге проводов будет 4, как ни крути :)

Моя сборка на макетной плате выглядит так. Arduino UNO, на макетной плате (Плата питания, пара кнопок, плата расширения i2c и LCD 1602A
Моя сборка на макетной плате выглядит так. Arduino UNO, на макетной плате (Плата питания, пара кнопок, плата расширения i2c и LCD 1602A

Почему русский текст без "геморроя" не выводится!?
Т.к. не все китайцы знают русский язык соответственно не все экраны знают русские символы!
Символьные экраны такие как LCD 1602A от того и называются символьными, т.к. по сути своей не рисуют изображения по пиксельно, а выводят то что хранят в своей памяти. На некоторых, особенно старых, моделях экранов в память чаще всего загружены только буквы и символы английского алфавита и арабские цифры, остальная память либо ничем не занята, либо в ней присутствуют иные символы.

Так-что если будете заказывать подобные экраны с "поднебесной" просите продавца отправить вам экран с загруженным русским шрифтом и с установленным i2c расширением! - это удобно!


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

Вот ссылка на эту библиотеку на ресурсе GitHub.

Вот мой пример скетча:

##include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x27, 16, 2); //инициализация экрана

void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("русский");
lcd.setCursor(0, 1);
lcd.print("ёж и грибочки");
}

void loop(){
}
Результат работы скетча.
Результат работы скетча.

Конечно есть свои "подводные" камни в данном исполнении библиотеки о которых я узнал относительно недавно когда начал активно её использовать. Из курса информатики, я вспомнил, что русский символ занимает 2 байта в отличии от английского занимающего 1 байт! (разгадка подводных камней).

Вывод один: Покупайте русифицированные платы. - если конечно русский язык так важен в ваших проектах!

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