суббота, 1 декабря 2012 г.

LCD 16x04 JM164A и правка библиотеки LiquidCrystal

Попался мне в руки ЖКИ по имени JM164A, слегка б/у, но в отличном состоянии.
Как оказалось почти идеально подходит по размерам к BlockDuino, чем я и воспользовался прикрутив и подпаяв его к плате BlockProto.
BlockDuino и BlockProto с прикрученным LCD JM164A
Но первое же подключение показало интересную проблемку. 
Для тестирования я загрузил стандартную программу из примеров:
[File> Example> LiquidCristal> setCursor]
изменив только разрешение в установках с 2х рядов строк на 4, ну и пины прописал те, к которым подпаял ЖКИ:

Но оказалось, что если первые два ряда отображаются так как и нужно, то третий и четвертый сдвинуты вправо на четыре символа:


Не знаю, это ошибка библиотеки или просто экранчик  отличается адресами знакомест? Скорей всего последнее, похоже что по умолчанию адреса забиты для экрана шириной в 20 символов, т.к. третий ряд начинается с адреса 0x14, а это 20 по десятеричной, а нам нужен 0x10, т.е.16. И соответственно четвертый ряд: нужно 0x50 вместо 0x54.

JM164A and correction for Arduino library LiquidCrystal

После правки библиотеки, как указанно на рисунке сверху, загружаем все тот же пример и получаем работоспособное устройство: