Для создания проектов на Arduino достаточно часто применяют дисплей LCD 1602 и LCD 2004. Как подключить LCD 1602 к Arduino рассмотрели в предыдущем уроке. Кроме текста очень часто нужно вывести специальные символы. Например, обозначение температуры - градус цельсия или процент влажности, а также направление продвижения или вращения. Как же вывести спец символы на дисплей LCD 1602 и LCD 2004? В данном уроке рассмотрим вывод из набора предустановленных символов и создадим свои символы, которые также выведем на LCD 1602 и LCD 2004.
Для урока понадодиться:
Схема подключения LCD 1602 к Arduino UNO по I2C.
Не смотря на то, что схему подключения уже рассматривали в предыдущем уроке. В данном уроке продублирую схему подключения LCD 1602 к Arduino UNO по I2C.
Выводим символы на дисплей LCD 1602 и LCD 2004.
В дисплее есть предустановленные символы, которые можно использовать. На рисунке ниже представлены символы и их порядковый номера.
Вывести
символ из данной таблицы на дисплей
LCD 1602 и LCD 2004 достаточно просто. Вызываем команду:
lcd.print(char(127));
Где 127 номер символа из таблицы.
Таким образом, можно использовать предустановленный набор символов.
Пример кода (Скетча) вывода символов на дисплей LCD 1602 и LCD 2004.
#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(). Это необходимо сделать, чтобы микроконтроллер понял, что мы выводим на дисплей символ, а не число.
В результате выведем вот такой набор символов.
Создаём и выводим на LCD 1602 собственные символы.
Для того чтобы создать собственный символ достаточно заполнить массив в котором 1 – это закрашенная ячейка на дисплее, а 0 – не закрашенная. В результате получим вот такое изображение.
Массив будет выглядит вот так. И массив и картинка очень похожи.
B00000,
B01010,
B10101,
B10001,
B01010,
B00100,
B00000,
B00000
По аналогии можно создавать другие спец символы.
Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.
Создал 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 | 1384 |
Скачать
Вы можете скачать файл.
|
|
Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.ino | 2 Kb | 1442 |
Скачать
Вы можете скачать файл.
|
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.