Крупный русский шрифт на ЖК дисплее LCD1602
- Войдите на сайт для отправки комментариев
Приветствую всех ардуинофобов и ардуинофилов)
LCD1602 - один из самых популярных дисплеев из-за его дешевизны и простоты использования. Неприятность заключается в том, что нельзя выводить абы какие символы на дисплей, можно только те что уже вшиты в него на заводе. Обычно встречаются дисплеи с вшитыми китайскими и английскими буквами и цифрами. Существуют дисплеи с вшитой кириллицей (обозначаются маркировкой CT или CP), но их сложнее найти, а стоят они дороже. Этим постом предлагаем решение проблемы.
Создатели дисплея любезно позаботились о нас и оставили 8 пустых ячеек в дисплее куда можно записать свои символы. Вот в эти 8 ячеек мы и засунули 33 буквы русского алфавита, а за одно и переписали цифры и знаки препинания, чтобы всё было в едином стиле.
Демонстрацию шрифта смотрите здесь https://youtu.be/9fWbCSm7FrE
или здесь https://static.wixstatic.com/media/22baca_e1608d16f7db4b36a9f4485659c53e29~mv2.gif
Качаем библиотеку BigRus1602 и добавляем ее в Arduino IDE.
Прежде чем начинать кодировать расскажу об ограничениях и возможностях библиотеки. Тестирование проходило на LCD Keypad Shield. С экранами работающими по I2c скорее всего не заработает. Просто не было I2c дисплея под рукой чтобы допилить код под него.
Основное отличие от других библиотек и экрана со вшитыми кириилическими символами - очень крупный шрифт. Библиотека принимает данные типа byte, int, long и массив char[].
Доступные для вывода на экран символы: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 1234567890 !?-.,:;
Есть 2 встроенных шрифта: Strong и Smooth
Библиотека BigRus1602 работает с опорой на стандартную библиотеку liquid crystal. По умолчанию она уже встроена в Arduino IDE, делать ничего не нужно.
Минимальный пример
// В этом примере текст прокручивается по экрану слева направо
#include "BigRus1602.h"
char text[] = " АЛХИМИЯ"; // обязательно заглавные буквы
//Пины для подключения LCD Keypad Shield
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
void setup()
{
lcdRus.begin();
lcdRus.scrollText(true); // включаем скроллинг текста
lcdRus.print(text); // выводим текст на экран единожды
}
void loop()
{
}
Изменяем скорость скроллинга
//Scroll speed
#include "BigRus1602.h"
char textSlow[] = " МЕДЛЕННО";
char textFast[] = " БЫСТРО";
//Пины для подключения LCD Keypad Shield
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
void setup()
{
lcdRus.begin();
}
void loop()
{
//второй аргумент - временной интервал между сдвигами, вводить его не обязательно(по умолчанию 1000 мс)
lcdRus.scrollText(true, 500);
lcdRus.print(textFast);
lcdRus.scrollText(true, 1000);
lcdRus.print(textSlow);
}
Объединяем несколько слов и выводим на экран
//Sequence of words
#include "BigRus1602.h"
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
void setup()
{
lcdRus.begin();
for (uint8_t i = 0; i <= 100; i++) //имитируем загрузку
{
lcdRus.print(i);
lcd.setCursor(lcdRus.getCarret(), 1);
lcd.print("% ");
delay(50);
}
delay(3000);
}
void loop()
{
lcd.clear();
for (uint8_t min = 0; min < 30; min++)
{
for (uint8_t sec = 0; sec < 60; sec++)
{
lcdRus.print(min);
lcdRus.print(":", lcdRus.getCarret() -1);
lcdRus.print(sec, lcdRus.getCarret() -1);
//заполним "хвост" строки пробелами чтобы избежать появления артефактов от старого текста. Можно заменить на lcd.clear()
lcdRus.print(" ", lcdRus.getCarret() -1);
delay(1000);
}
}
}
В библиотеке доступно два шрифта: Strong и Smooth. Чтобы выбрать один из них откройте файл BigRus1602Font.h. Путь к этому файлу выглядит примерно так C:\Users\Admin\Documents\Arduino\libraries\BigRus1602\ В указанном файле нужно раскомментированую одну из строк. Остальные строки должны быть закомментированы.
Если нужно сэкономить память контроллера, оставьте раскомментированым только строку BC_ONLY_NUMBER
//#define BC_STRONG_FONT //угловатые буквы и цифры #defineBC_SMOOTH_FONT //скругленные буквы и цифры //#define BC_ONLY_NUMBER //только цифры (для экономии памяти)
Больше примеров есть в папке Example.
Библиотека написана программистом - любителем для экономии вашего времени.
Посмотрите ролик о том, как проходило создание библиотеки.

Это бы надо в Проекты перетащить.
Я сильно сомневаюсь в том, что кому то может понадобится вывод трёх букв жирным шрифтом на дисплей.
четырёх! ))
Technomagic - куда Катю дели? Почему ее нет в видео? она ваш главный ресурс для успеха на Ютубе, без нее тут и смотреть не на что :)
А вот зато с ней я готов слушать о чем угодно - о шрифтах, о бурях на марсе, да хоть о чистке септиков :)
:-)
https://www.instructables.com/BIG-Alpha-numeric-DISPLAY/
Даёшь "многодисплейные экраны" - много и разных!
Есть два варианта использования:
1. В Режиме бегущей строки
2. Режим часов или таймера в виде ЧЧ:ММ, такого экрана как раз достатчно
Есть два варианта использования:
1. В Режиме бегущей строки
2. Режим часов или таймера в виде ЧЧ:ММ, такого экрана как раз достатчно
Для ЧМ:ММ есть BigNumbers.h
А бегущая строка из 4 знаков , это бред.
К тому же она будет не плавно , а сразу на 1/4 экрана шагать.
Работа в никуда одним словом.
Technomagic - куда Катю дели? Почему ее нет в видео? она ваш главный ресурс для успеха на Ютубе, без нее тут и смотреть не на что :)
А вот зато с ней я готов слушать о чем угодно - о шрифтах, о бурях на марсе, да хоть о чистке септиков :)
Уже готовятся 2 новых ролика с участием Кати :)
Постараемся снизить уровень занудства в следующих выпусках)
Есть два варианта использования:
1. В Режиме бегущей строки
2. Режим часов или таймера в виде ЧЧ:ММ, такого экрана как раз достатчно
Шагает плавно, на 1/16 экрана, посмотрите демонстрацию) https://youtu.be/9fWbCSm7FrE
Посмотрел.
Абсолютно не читаемо.
Возможно показалось, но 8 символов не хватает и временами идёт наложение сопровождаемое мерцанием.
На всякий случай: символ полной штриховки вроде есть в наборах шрифтов.
временами идёт наложение сопровождаемое мерцанием..
Мерцание есть на видео, в живую оно отсутствует
2. Режим часов или таймера в виде ЧЧ:ММ, такого экрана как раз достатчно
Ни разу не новость )) - http://arduino.ru/forum/proekty/eshche-odni-chasy-na-lcd1602-s-krupnymi-tsiframi
куда Катю дели? Почему ее нет в видео?
Что за Катя, почему не знаю?
куда Катю дели? Почему ее нет в видео?
Что за Катя, почему не знаю?
https://www.youtube.com/watch?v=6AjMIHM4uXA
2. Режим часов или таймера в виде ЧЧ:ММ, такого экрана как раз достатчно
Ни разу не новость )) - http://arduino.ru/forum/proekty/eshche-odni-chasy-na-lcd1602-s-krupnymi-tsiframi
:-)
Особенно понравилось -"Что бы вы ни делали на Ардуино, все равно получаются или часы, или метеостанция"
Ещё раз вчитался в тему "как вывести на экран 1602 свой массив пикселей 32*5*8" и понял что никак :-)
Ещё раз вчитался в тему "как вывести на экран 1602 свой массив пикселей 32*5*8" и понял что никак :-)
Могу посоветовать только скачать генератор пикселей, в котором будет видно сразу весь массив пикселей 32х5х8. Генератор просто переводит клацание мышкой по пикселям в байт-код пригодный для контроллера.
https://youtu.be/eSnQn7cJNiU вот так он выглядит.
Здесь можно скачать его, в самом низу страницу ссылка.
Это всё полезно, но в целом дисплей не позволяет одновременно пользоваться всей своей площадью при выводе графической информации, уступая по всем параметрам кроме размеров ssd1306 :-)
Это всё полезно, но в целом дисплей не позволяет одновременно пользоваться всей своей площадью при выводе графической информации, уступая по всем параметрам кроме размеров ssd1306 :-)
А использовать графический (по назначению!) не судьба?
Да и текст тоже толком, ни шрифта, ни половину шрифта своего.
:-)
Вообще удивительно, что китайцы его делают по "такой схеме", у самих около 50000 символов для написания имеется.