Редактор символов для lcd

Здравствуй, %username%. В этой статье я хотел бы рассказать про свой небольшой проект, призванный при помощи одного велосипеда и небольшой связки костылей слегка упростить жизнь embedded-разработчику, имеющего дело с графическими дисплеями или платами OSD.

Интро

Однажды мне довелось увидеть, как силами коллеги создаются шрифты для платы OSD, которая должна была быть затем установлена в монитор. Увиденное ввело меня в легкий ступор и заставило зашевилиться волосы на голове (картинка кликабельна).

Сначала каждый символ прорисовывался на листе в клетку. Затем изображение каждого символа в тетради вручную переводилось в массив байт и помещалось в исходники прошивки. На создание каждого символа уходило около часа кропотливой работы. Осознание того, что за окном уже заканчивается 2016 год, и тетрадь в клетку не является оптимальным средством для достижения цели, подтолкнуло меня… нет, не на написание своего решения, а на поиск уже готового. Однако, беглый поиск показал, что большинство имеющихся решений содержат хотя бы один из перечисленных недостатков:

  • небесплатны (иногда цена приближалась к 100 евро);
  • заточены под определенный формат (количество бит на пиксель, размер символа и кодирование цветов);
  • поддерживают только символы из стандартного набора шрифтов (зачастую на OSD приходится выводить совершенно отличные от букв, цифр и стрелочек символы).

На пути к велофабрике

Желание сделать мир чуть лучше и пара свободных вечеров вылились в небольшую утилиту командной строки — PixelPixie. На вход программа получает файл с изображением, на котором через равные промежутки (для этого проще всего использовать сетку) изображены символы будущего шрифта. Настройки генератора шрифта хранятся в JSON файле. Все цвета, использованные при рисовании символов, необходимо поставить в соответствие с последовательностью бит. Последовательность задается в десятичном виде.

Читайте также  Почему включается экран телефона сам по себе

Генератор, обрабатывая изображение, побитово составит выходной массив. Одной из важных особенностей PixelPixie является то, что она может работать с любым количеством бит на пиксель. Например, часто требуется кодировать каждый пиксель 2 или 3 битами. Сами символы могут так же быть произвольного размера и находиться в сетке с произвольным количеством столбцов и строк. Таким образом, я попытался сделать генератор максимально независимым от конкретного устройства, для которого генерируется шрифт.

Дополнительно PixelPixie умеет создавать изображение с пустой сеткой. Разработчику остается в любимом растровом редакторе "вписать" символы в ячейки сетки и дважды щелкнуть по batch-скрипту, который запускает PixelPixie. Теперь процесс работы над шрифтом выглядит примерно так:

На выходе мы получаем массивы, готовые для копипасты в исходник прошивки управляющего микроконтроллера.

И наблюдаем наш шрифт на экране ЖК-дисплея, подключенного к плате OSD.

Вместо заключения

Использование PixelPixie для разработки шрифтов платы OSD позволило сократить время работы над каждым символом с часа до 10 минут в самых сложных символах. Конечно, разработчику все еще приходится попиксельно вырисовывать каждую букву и по несколько раз проверять, как она отображается на конечном устройстве, но количество рутины удалось сократить в несколько раз.
Исходный код PixelPixie доступен на GitHub.

Сайт об электронике и не только

Символьный генератор

Данная программа предназначена для генерации массива символов для графических дисплеев. Она может генерировать, как символы обычного размера 5х8, так и символы размеров в 2 раза больше стандартного 10х16.

Пример использования массивов символов и функции отображения символов

Данные шрифты используются на дисплее от сотового телефона Nokia 3310 и на всех последующих проектах с монохромными графическими дисплеями:

Эти шрифты подойдут и к другим графическим дисплеям (например: дисплеям на контроллере KS0108B), которые схожи по организации памяти.

  • Программа открывается по центру рабочего стола, а не по центру рабочей области всех рабочих столов;
  • При двойном клике на строчку кода сформированного символа — символ отобразиться на рабочей области;
  • Добавлена возможность сохранения сгенерированного кода.
Читайте также  Поролоновые накладки для наушников

Программа обновлена 09.01.2017

Статья обновлена 09.01.2017

9 комментариев на « Символьный генератор»

САНЕК пишет 13.01.2011 в 10:35 #

Ни чего подобного,по простоте в обращении,ещё не встречал.Хотя есть пара буржуйских прог,но всё это не то!
Респект автору.
Если в будующем появится прога на весь 3310 (84х48) это будет фантастика.
Творческих успехов.

Alex_EXE пишет 14.01.2011 в 15:14 #

Если в будующем появится прога на весь 3310 (84х48) это будет фантастика.

valexus пишет 17.01.2011 в 00:24 #

Прога на весь экран nokia 3310 есть , FastLcd называеться , только она сохраняет масив в формате бейсика , потом обязательно надо в виндовсовском блокноте формат заменить на сишный или еще какойто (делов на несколько секунд).

САНЕК пишет 23.01.2011 в 10:05 #

Alex_EXE
Спасибо за Ваш труд.
Проверил,очень удобно.

Игорь пишет 12.03.2011 в 16:06 #

Скачал » штобы было». Но всё-же огромное СПАСИБО .

Лёха пишет 05.04.2014 в 21:06 #

Я как дурак в пейнте рисовал и в калькуляторе переводил. Спасибо

H`UGO пишет 18.06.2014 в 21:53 #

Отличная прога! А возможно не фиксировать размер, а устанавливать скажем не только 5х8 и 10х16, а в диапозоне? Допустим выставил 14 х 24, и колдуешь.

Cyrill пишет 05.03.2015 в 16:15 #

Собрал проэкт в Keil 4 с русским шрифтом борода, не отображает ни на одном дисплее вместо выводит символы C & P

Alex_EXE пишет 10.03.2015 в 01:47 #

Сайт об электронике и не только

Символьный генератор

Данная программа предназначена для генерации массива символов для графических дисплеев. Она может генерировать, как символы обычного размера 5х8, так и символы размеров в 2 раза больше стандартного 10х16.

Пример использования массивов символов и функции отображения символов

Данные шрифты используются на дисплее от сотового телефона Nokia 3310 и на всех последующих проектах с монохромными графическими дисплеями:

Читайте также  Почему скайп каждый раз устанавливается

Эти шрифты подойдут и к другим графическим дисплеям (например: дисплеям на контроллере KS0108B), которые схожи по организации памяти.

  • Программа открывается по центру рабочего стола, а не по центру рабочей области всех рабочих столов;
  • При двойном клике на строчку кода сформированного символа — символ отобразиться на рабочей области;
  • Добавлена возможность сохранения сгенерированного кода.

Программа обновлена 09.01.2017

Статья обновлена 09.01.2017

9 комментариев на « Символьный генератор»

САНЕК пишет 13.01.2011 в 10:35 #

Ни чего подобного,по простоте в обращении,ещё не встречал.Хотя есть пара буржуйских прог,но всё это не то!
Респект автору.
Если в будующем появится прога на весь 3310 (84х48) это будет фантастика.
Творческих успехов.

Alex_EXE пишет 14.01.2011 в 15:14 #

Если в будующем появится прога на весь 3310 (84х48) это будет фантастика.

valexus пишет 17.01.2011 в 00:24 #

Прога на весь экран nokia 3310 есть , FastLcd называеться , только она сохраняет масив в формате бейсика , потом обязательно надо в виндовсовском блокноте формат заменить на сишный или еще какойто (делов на несколько секунд).

САНЕК пишет 23.01.2011 в 10:05 #

Alex_EXE
Спасибо за Ваш труд.
Проверил,очень удобно.

Игорь пишет 12.03.2011 в 16:06 #

Скачал » штобы было». Но всё-же огромное СПАСИБО .

Лёха пишет 05.04.2014 в 21:06 #

Я как дурак в пейнте рисовал и в калькуляторе переводил. Спасибо

H`UGO пишет 18.06.2014 в 21:53 #

Отличная прога! А возможно не фиксировать размер, а устанавливать скажем не только 5х8 и 10х16, а в диапозоне? Допустим выставил 14 х 24, и колдуешь.

Cyrill пишет 05.03.2015 в 16:15 #

Собрал проэкт в Keil 4 с русским шрифтом борода, не отображает ни на одном дисплее вместо выводит символы C & P

Alex_EXE пишет 10.03.2015 в 01:47 #

Ссылка на основную публикацию
Adblock
detector