Багато експериментують з * duino стикаються з графічними монохромними LCD екранчиками на контролерах ks0107 / ks0108. Благо для їх підтримки є кілька версій тільки офіційної бібліотеки.
Бібліотечку можна взяти тут:
code.google.com/p/glcd-arduino/downloads/list
Питання підключення екранчика до контролера я розглядати не буду, приклади є і на цьому сайті і на просторах інтернету бажаючий знайде без праці. Крім того, досить докладно розписано в документації до бібліотеки.
Засада криється в тому, що без рухів тіла, напруги сірої речовини російський текст з скетчу Ардуіно ніякими долями не виведеш. Ну немає в складі бібліотеки російських шрифтів і все! Правда додається на сторінці скачування программуліна для винаходу своїх шрифтів і конвертації віндовий.
Ну по-перше, написана вона на JAVA, отже запустити її теж треба зуміти, а по-друге ну ніяк вона у мене не захотіла знаходити російські букви в віндовий шрифтах, кракозябри і все. )
Лінь, вона звичайно сильна, слів немає. Тому Яндексу і Гуглу були скормлю пара десятків запитів на різні варіації ключових слів «російський шрифт GLCD». Нічого зрозумілого, а тим більше готового файлу не знайшлося. Може звичайно не так шукав ...
Ну да ладно, робити нічого, довелося напружувати горезвісне речовина.
Відразу зазначу: У даній замітці я розгляну створення (а точніше - модифікацію) шрифту містить символи фіксованої ширини. Якщо тема кого зацікавить можна буде підібратися і до шрифту з символами змінної ширини.
Отже поїхали!
Завантажуємо і розпаковуємо бібліотеку. Файли з описом шрифтів лежать в таткові «fonts». Відкриваємо найдрібніший SystemFont5x7.h і намагаємося зробити йому трепанацію. Нас цікавить які параметри описує цей файл, тобто структура опису шрифту.
Ну ніби все досить ясно для практичного використання:
розмір символів строго 5х7 точок, міжсимвольний інтервал додається автоматом, останній використаний код 0x20 + 0x60 - 1 = 0x7F. Починаючи з 0x80 можна колобродити свої бітові маски.
Звичайно, охочі можуть взяти зошит в клітинку, олівчик, розмітити знакомісця 5 на 7 клітинок, зафарбувати відповідні і перевести на початку в бінарний код а потім в HEX. Круто.
:) Тільки для початку треба інтерпретувати по клітинках коди символу 0х41, щоб розібратися як бібліотека отрісовиваєт символ по вертикалі або по горизонталі.
Я скористався цією метою знайденої на просторі інтернету програмою, здатної стати в нагоді не тільки при винаході шрифтів але і для інших робіт з нашим екранчіком. (Можна взяти тут: ikarab.narod.ru/KS0108.html) В ній є перетворення «код - картинка» можна перевірити символ 0х41 і отримати «A». Відповідно, зафарбовуючи попиксельно знакомісця - отримуємо рядок HEX-кодів символів.
Ну що ж, малюємо:
Ну ось, найбільш трудомістка частина роботи позаду ... Не притомились?
Йдемо далі…
Здавалося б, додаємо наш двійковий масив в хвіст шрифту, коригуємо заголовок і ось воно - щастя! Не тут то було!
Мене осяяла здорова ідея - перевірити в якому кодуванні працює Arduino IDE. Для цього був спішно накидав шматочок коду: