Приветствую всех ардуинофобов и ардуинофилов
LCD1602 - один из самых популярных дисплеев из-за его дешевизны и простоты использования. Неприятность заключается в том, что нельзя выводить абы какие символы на дисплей, можно только те что уже вшиты в него на заводе. Обычно встречаются дисплеи с вшитыми китайскими и английскими буквами и цифрами. Существуют дисплеи с вшитой кириллицей (обозначаются маркировкой CT или CP), но их сложнее найти, а стоят они дороже. Этим постом предлагаем решение проблемы.
Создатели дисплея любезно позаботились о нас и оставили 8 пустых ячеек в дисплее куда можно записать свои символы. Вот в эти 8 ячеек мы и засунули 33 буквы русского алфавита, а за одно и переписали цифры и знаки препинания, чтобы всё было в едином стиле.
Демонстрация шрифта. В ролике заметно мерцание текста, в реальности этого не заметно.
Качаем библиотеку BigRus1602 и добавляем ее в Arduino IDE. Основное отличие от других библиотек и экрана со вшитыми кириилическими символами - очень крупный шрифт. Точнее 2 встроенных шрифта: Strong и Smooth.
Есть два основых варианта использования библиотеки:
Тестирование проходило на LCD Keypad Shield. С экранами работающими по I2c скорее всего не заработает. Просто не было I2c дисплея под рукой чтобы допилить код под него.
Библиотека принимает данные типа byte, int, long и массив char[].
Доступные для вывода на экран символы:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 1234567890 !?-.,:;
Библиотека BigRus1602 работает с опорой на стандартную библиотеку liquid crystal. По умолчанию она уже встроена в Arduino IDE, делать ничего не нужно.
Для создания шрифта использовались генераторы символов для LCD дисплеев. Подробнее об этих генераторах читайте здесь.
Рассмотрим несколько примеров
В библиотеке доступно два шрифта: Strong и Smooth. Чтобы выбрать один из них откройте файл BigRus1602Font.h. Путь к этому файлу выглядит примерно так C:\Users\Admin\Documents\Arduino\libraries\BigRus1602\ В указанном файле нужно раскомментированую одну из строк. Остальные строки должны быть закомментированы.
Если нужно сэкономить память контроллера, оставьте раскомментированым только строку BC_ONLY_NUMBER
Библиотека написана программистом - любителем для экономии вашего времени. Больше примеров есть в папке Example.
Посмотрите ролик о том, как происходило создание библиотеки.
LCD1602 - один из самых популярных дисплеев из-за его дешевизны и простоты использования. Неприятность заключается в том, что нельзя выводить абы какие символы на дисплей, можно только те что уже вшиты в него на заводе. Обычно встречаются дисплеи с вшитыми китайскими и английскими буквами и цифрами. Существуют дисплеи с вшитой кириллицей (обозначаются маркировкой CT или CP), но их сложнее найти, а стоят они дороже. Этим постом предлагаем решение проблемы.
Создатели дисплея любезно позаботились о нас и оставили 8 пустых ячеек в дисплее куда можно записать свои символы. Вот в эти 8 ячеек мы и засунули 33 буквы русского алфавита, а за одно и переписали цифры и знаки препинания, чтобы всё было в едином стиле.
Демонстрация шрифта. В ролике заметно мерцание текста, в реальности этого не заметно.
Качаем библиотеку BigRus1602 и добавляем ее в Arduino IDE. Основное отличие от других библиотек и экрана со вшитыми кириилическими символами - очень крупный шрифт. Точнее 2 встроенных шрифта: Strong и Smooth.
Есть два основых варианта использования библиотеки:
- Вывод текста в режиме бегущей строки
- Для часов или таймера в виде ЧЧ:ММ
Тестирование проходило на LCD Keypad Shield. С экранами работающими по I2c скорее всего не заработает. Просто не было I2c дисплея под рукой чтобы допилить код под него.
Библиотека принимает данные типа byte, int, long и массив char[].
Доступные для вывода на экран символы:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 1234567890 !?-.,:;
Библиотека BigRus1602 работает с опорой на стандартную библиотеку liquid crystal. По умолчанию она уже встроена в Arduino IDE, делать ничего не нужно.
Для создания шрифта использовались генераторы символов для LCD дисплеев. Подробнее об этих генераторах читайте здесь.
Рассмотрим несколько примеров
Минимальный код:
// В этом примере текст прокручивается по экрану слева направо
#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); // true включаетскроллингтекста. false выключает
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);
}
Чтение данных последовательного порта и вывод на ЖК-экран:
//SerialRead
#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()
{
lcd.begin(16, 2);
lcdRus.begin();
Serial.begin(9600);
lcdRus.scrollText(true);
}
void loop()
{
char serialText[30];
if (Serial.available())
{
//чем больше символов в строке, тем больше нужно времени чтобы принять ее
delay(100);
int availableText = Serial.available();
for (int i = 0; i < availableText; i++)
{
serialText[i] = Serial.read();
serialText[i + 1] = '\0';
}
lcdRus.print(serialText);
}
}
Если нужно сэкономить память контроллера, оставьте раскомментированым только строку BC_ONLY_NUMBER
Выбор шрифта:
//#define BC_STRONG_FONT //угловатые буквы и цифры
#define BC_SMOOTH_FONT //скругленные буквы и цифры
//#define BC_ONLY_NUMBER //только цифры (для экономии памяти)
Посмотрите ролик о том, как происходило создание библиотеки.
Вложения
-
384.1 KB Просмотры: 362
Изменено: