Для создания проектов на Arduino достаточно часто применяют дисплей LCD 1602 и LCD 2004. Как подключить LCD 1602 к Arduino рассмотрели в предыдущем уроке. Кроме текста очень часто нужно вывести специальные символы. Например, обозначение температуры - градус цельсия или процент влажности, а также направление продвижения или вращения. Как же вывести спец символы на дисплей LCD 1602 и LCD 2004? В данном уроке рассмотрим вывод из набора предустановленных символов и создадим свои символы, которые также выведем на LCD 1602 и LCD 2004.
Для урока понадодиться:
Не смотря на то, что схему подключения уже рассматривали в предыдущем уроке. В данном уроке продублирую схему подключения LCD 1602 к Arduino UNO по I2C.
В дисплее есть предустановленные символы, которые можно использовать. На рисунке ниже представлены символы и их порядковый номера.
lcd.print(char(127));
Где 127 номер символа из таблицы.
Таким образом, можно использовать предустановленный набор символов.
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27, 16, 2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() { // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора delay(5000); lcd.setCursor(0, 0); lcd.print("25"); lcd.print(char(223)); lcd.print("C"); lcd.print(" "); lcd.print(char(127)); lcd.print(" "); lcd.print(char(126)); lcd.print(" "); lcd.print(char(37)); lcd.print(" "); lcd.print(char(61)); lcd.print(char(62)); lcd.setCursor(0, 1); lcd.print(" "); lcd.print(char(255)); lcd.print(" "); lcd.print(char(252)); lcd.print(" "); lcd.print(char(219)); lcd.print(" "); lcd.print(char(170)); lcd.print(" "); lcd.print(char(63)); lcd.print(" "); lcd.print(char(58)); lcd.print(" "); lcd.print(char(33)); } void loop() { }
Как видим из кода, вывод символов ничем не отличается от вывода обычного текста, только вывести можно всего один символ и при этом нужно преобразовать значение в char(). Это необходимо сделать, чтобы микроконтроллер понял, что мы выводим на дисплей символ, а не число.
В результате выведем вот такой набор символов.
Для того чтобы создать собственный символ достаточно заполнить массив в котором 1 – это закрашенная ячейка на дисплее, а 0 – не закрашенная. В результате получим вот такое изображение.
Массив будет выглядит вот так. И массив и картинка очень похожи.
B00000, B01010, B10101, B10001, B01010, B00100, B00000, B00000
По аналогии можно создавать другие спец символы.
Создал 8 спец символов для вывода на дисплей LCD 1602 и LCD 2004.
byte customChar[] = { B00000, B01010, B10101, B10001, B01010, B00100, B00000, B00000 }; byte customChar1[] = { B00001, B00010, B00100, B01000, B11111, B00010, B00100, B01000 }; byte customChar2[] = { B11111, B10001, B10001, B10001, B10001, B10001, B10001, B11111 }; byte customChar3[] = { B11111, B10101, B01010, B01110, B10101, B11011, B11111, B11111 }; byte customChar4[] = { B11110, B11101, B11011, B10111, B00000, B11101, B11011, B10111 }; byte customChar5[] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; byte customChar6[] = { B10111, B11011, B11101, B11110, B11101, B11011, B10111, B11111 }; byte customChar7[] = { B01110, B01010, B01110, B10101, B01110, B00100, B01010, B10001 };
Давайте сейчас сохраним данные символы в память дисплея. Для этого используется команда lcd.createChar().
lcd.createChar(0, customChar); lcd.createChar(1, customChar1); lcd.createChar(2, customChar2); lcd.createChar(3, customChar3); lcd.createChar(4, customChar4); lcd.createChar(5, customChar5); lcd.createChar(6, customChar6); lcd.createChar(7, customChar7);
После чего символ можно выводить на дисплей и повторно загружать не нужно. Но тут есть свое ограничение, записать можно только 8 символов. Также любой символ можно перезаписать.
Для вывода символов устанавливаем курсор. Например, в домашнюю позицию и выводим по порядку все символы.
lcd.home(); lcd.write(0); lcd.print(" "); lcd.write(1); lcd.print(" "); lcd.write(2); lcd.print(" "); lcd.write(3); lcd.print(" "); lcd.write(4); lcd.print(" "); lcd.write(5); lcd.print(" "); lcd.write(6); lcd.print(" "); lcd.write(7);
Вот так символы отображаются на дисплее LCD 1602 и LCD 2004.
Но это не позволяет нам выводить русские буквы на дисплей LCD 1602 и LCD 2004. Для этого есть специально адаптированная библиотека с ней мы познакомимся в следующем уроке.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
Пример кода (Скетча) вывода символов на дисплей LCD 1602 и LCD 2004.ino | 2 Kb | 1647 | Скачать |
![]() |
Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.ino | 2 Kb | 1744 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 7 июля , 2021
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.