Приветствую Вас, Гость! Регистрация RSS

Пятница, 19.04.2024
Главная » Статьи » Cтатьи

Arduino Mega2560. Библиотека LiquidCrystal. Вывод кирилицы

ВВЕДЕНИЕ

В этой статье опишу доделку библиотеки LiquidCrystal по выводу кирилицы. Доделка не новая и про точно такую же я освещал в статье Arduino Mega2560. Библиотека UTFT. Вывод кирилицы.. Данная доделка работает только с ЖКД, которые на своем борту имеют кирилические символы.

РЕАЛИЗАЦИЯ ПРОГРАММНОГО КОДА 

Собственно определение поступившего символа c происходит в цикле while с условием неравенства из массива символов character_rus[] "И" если счетчик s не инкрементирован выше чем размер массива. Далее нашли символ в массиве, вышли из цикла, проверили что счетчик s не равен размеру массива символов и используя метод write отправляем байт в ЖКД для вывода символа в нужном знакоместе. Вот так выглядит код в файле реализации LiquidCrystal.cpp по выводу кирилицы:

Первое вхождение условия if определяет символ, и если это латиница, то все символы отправляем в метод write. Если это кирилица, то переходим на ветку else. И собственно массив символов и байтов (ВАЖНО! чтобы местоположение символа соотвествовало местоположению байта):

Информацию по тому какие байты соотвествуют символам в ЖКД можно найти в мануале на дисплей. Для проверки символов зашитых в ROM ЖКД можно воспользоваться методом write с указанием байта-адреса в шестнадцатеричной или десятичной системе исчисления. Запись методов в файле LiquidCrystal.h выглядит так:

Методы outText в двух вариантах позволяют выводить строки из указателя и параметром самого метода.

ТЕСТИРОВАНИЕ КОДА В СРЕДЕ Arduino 1.6.0 

Теперь посмотрим как вся эта "кухня" будет выглядеть в скетче. Как обычно создаем экземпляр класса и указываем параметры конструктора как линии управления (RS, RW, E) и шину данных (D0-D7). Конструктор принимает 4 различных варианта параметров в зависимости от подключения дисплея к плате arduino, т.е. 8-4-битный режим и когда линию RW подключаем на землю.

Я работал с 4-м конструктором, линию rw посадил на общий провод. Соответственно скетч будет таким:

Метод outText позволяет оперировать со строками, содержащими как кирилицу, так и латиницу, поэтому не обязательно обращаться к методу print для строк с латиницей. Есть нюанс по файлам LiquidCrystal.h и LiquidCrystal.cpp - они в кодировке UTF-8 и это правильно, но иcпытывал библиотеку на другом компе, я обнаружил отсутствие вывода кирилицы - решение: пришлось переконвертировать оба файла в кодировку ANSI (Windows), после этого все заработало. В чем дело - "а хз...", не стал разбираться в чем проблема.

Вобщем на этом и всё, если будут вопросы или предложения - пишите!

ФАЙЛЫ

Библиотека LiquidCrystal


Категория: Cтатьи | Добавил: Автор (03.09.2015)
Просмотров: 17672 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]