LCD 1602 русский шрифт на Ардуино

На LCD 1602 русский шрифт с Arduino можно вывести с помощью собственных символов. Рассмотрим, как сделать любые буквы на кириллице на LCD дисплее.


lcd 1602 русский шрифт на Ардуино

LCD 1602 русский шрифт не поддерживает, но можно вывести кириллицу на Arduino с помощью создания собственных символов. Рассмотрим, как сделать любые символы и буквы на кириллице на LCD дисплее Ардуино. Для этого нам потребуется использовать в скетче переменную byte и функцию lcd.createChar (). Сразу отметим, что объем памяти на Ардуино для знаков ограничен всего восемью символами.

Видео. Русские буквы на LCD Display I2C 1602

Как вывести свой символ на LCD 1602

Вывести свой символ или кириллическую букву на дисплей поможет таблица знакогенератора (CGROM). Такой вид памяти в Ардуино, как CGRAM, может хранить собственные символы, но размер памяти ограничен и может вместить лишь 8 собственных символов. Один из нестандартных символов, который пригодится для создания домашней метеостанции — знак градуса. Давайте нарисуем символ.

Создаем свой символ для LCD дисплея 1602
Создаем свой символ для LCD дисплея 1602

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

Выводим на LCD 1602 собственный символ

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • LCD монитор 1602;
  • провода «папа-мама».

Подключение LCD дисплея по I2C производится четырьмя проводами «папка-мамка» — 2 провода данных и 2 провода питания. Если вы подключаете дисплей Ардиуно УНО, используйте следующую схему — вывод SDA подключается к порту A4, вывод SCL – к порту A5 и два провода питания — GND и 5V. Если LCD 1602 подключается по шине I2C к Arduino Mega, то на плате имеются соответствующие порты — SDA и SCL.

Подключение LCD 1602 к Arduino UNO через I2C
Подключение LCD 1602 к Arduino UNO через I2C

Скетч для создания символа на LCD I2C

#include <Wire.h> // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея 20х2

// создаем свой символ и присваиваем ему имя "simvol"
byte simvol[8] = {
0b01100,
0b10010,
0b10010,
0b01100,
0b00000,
0b00000,
0b00000,
0b00000
};

void setup() {
   lcd.init(); // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея

   lcd.createChar(1, simvol);
   
   lcd.setCursor(0,0); // ставим курсор на 1 символ первой строки
  lcd.print(char(1)); // печатаем символ на первой строке
}

void loop() {
}

Пояснения к коду:

  1. с помощью массива byte simvol[8] = { }; мы зашифровали знак градуса, который нарисовали ранее на листочке бумаги;
  2. функция lcd.createChar(num, data); создает пользовательский символ для LCD, где в скобках указан num — номер символа и data — данные о массиве.
  3. каждая строка массива начинается с 0b — «нуль» и прописная «b».

Выводим на LCD 1602 русский шрифт

Дисплей поддерживает 8 новых символов (пронумерованных от 0 до 7) размером 5 на 8 пикселей. Букву на кириллице, как и символ, можно задать массивом из восьми байт, характеризующих соответствующую строку. Поскольку можно добавить до 8 символов, то используйте при выводе надписей сочетание латинских и кириллических букв, как на примере. Загрузите скетч с надписью «Я ❤ РОБОТЕХНИКА18.РФ»

Скетч с русскими буквами на LCD I2C

#include <Wire.h> // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея 20х2

// создаем символ сердца и четырех букв на кириллице

byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 };

byte I[8] = { 0b01111, 0b10001, 0b10001, 0b01111, 0b00101, 0b01001, 0b10001, 0b00000 };
byte B[8] = { 0b11111, 0b10000, 0b10000, 0b11110, 0b10001, 0b10001, 0b11110, 0b00000 };
byte N[8] = { 0b10001, 0b10001, 0b10011, 0b10101, 0b11001, 0b10001, 0b10001, 0b00000 };
byte F[8] = { 0b01110, 0b10101, 0b10101, 0b10101, 0b01110, 0b00100, 0b00100, 0b00000 };

void setup() {
   lcd.init(); // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея

   // присваиваем символам порядковый номер

   lcd.createChar(1, heart);
   lcd.createChar(2, I);
   lcd.createChar(3, B);
   lcd.createChar(4, N);
   lcd.createChar(5, F);
  
   lcd.setCursor(6,0); // устанавливаем курсор на 6 символ первой строки
  
   lcd.print(char(2));
   lcd.print(" ");
   lcd.print(char(1));
  
   lcd.setCursor(0,1); // устанавливаем курсор на начало второй строки
  
   lcd.print("P");
   lcd.print("O");
   lcd.print(char(3));
   lcd.print("O");
   lcd.print("T");
   lcd.print("E");
   lcd.print("X");
   lcd.print("H");
   lcd.print(char(4));
   lcd.print("K");
   lcd.print("A");
   lcd.print("1");
   lcd.print("8");
   lcd.print(".");
   lcd.print("P");
   lcd.print(char(5));
}

void loop() {
}

Пояснения к коду:

  1. Массивы строк в функции byte simvol[8] = { }; можно прописывать в строку;
  2. Слово РОБОТЕХНИКА18.РФ использует набор русских и латинских букв.
  3. Процедура void loop() в скетче не используется, но все равно присутствует.
1 Star2 Stars3 Stars4 Stars5 Stars (36 votes, average: 4,81 out of 5)
Загрузка...

3 комментариев для “LCD 1602 русский шрифт на Ардуино

  1. Заметил в последнем скетче ошибку в 16 й строке
    вместо «void { »
    нужно указать
    void setup()
    {

  2. Для сокращения записи, чтоб не писать столбиком можно cделать так:
    lcd.print («BH\2MAH\2E!!!») ; // Выводим текст «ВНИМАНИЕ!!!»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *