Висновок російських букв на lcd дисплей arduino

Висновок російських букв на lcd дисплей arduino


Основний і найбільш зручною бібліотекою для роботи з LCD пиксельними дисплеями є бібліотека Adafruit GFX.
Дана бібліотека чисто графічна, тому для роботи з певною моделлю дисплея разом з нею варто використовувати ще одну спеціалізовану бібліотеку.
Наприклад, для Nokia 5110 дисплея це Adafruit-PCD8544. Для OLED 0.96 "OLED 128x64 - Adafruit_SSD1306. Бібліотеки для інших моделей можна знайти тут (або тут: список).

Отже, ви підключили свій дисплей, в скетчі додали дві бібліотеки, про які йшла мова вище і пробуєте вивести російські літери. Але ось невдача - замість них ваш дисплей відображає всякі кракозябри. Це відбувається тому, що в бібліотеках від Adafruit немає російського шрифту. Додати його зовсім не складно. Потрібно замінити в файлі glcdfont.c з бібліотеки Adafruit GFX певні символи на російські належним кодуванням. Однак, шрифт розрахований на однобайтном кодування букв, а Arduino IDE використовує для російських букв двухбайтового UTF-8,

У російській кодуванні UTF-8 простежується певна закономірність, яка дозволяє нехитрим чином перетворювати з UTF-8 в однобайтових російську кодування Windows-1251, яка і була обрана для заміни букв.

Функція utf8rus () отримує вихідну рядок, символи з кодами 0x00-0xBF пропускає без зміни у вихідний рядок, а в решти кодах відбирає російські букви і перекодовує їх.

Функція перекодування російських букв з UTF-8 в Win-1251

Таким чином, для русифікації вашого дисплея необхідно:
- завантажити будь-який з наведених нижче (або вище) архівів;
- замінити файл glcdfont.c в Adafruit-GFX на ось цей;
- додати функцію utf8rus () в скетч;
- вставити на початку скетчу команду: display.cp437 (true);

Застосовувати функцію utf8rus () можна всередині команд друку рядків:
display.println (utf8rus ( "Тест"));

Приклади для різних дисплеїв

Nokia 5110 (PCD8544)