Сводный список записей блога

--->>>> Сводный список записей блога <<<<---

10 августа 2022

Растровые шрифты и оптимизация занимаемого места

Продолжим разговор о выводе информации на графические дисплеи средствами недорогих микроконтроллеров.

Ранее я писал про абстракцию пользовательской графики от типа дисплея и способа его подключения, а так же вскользь упомянул о шрифтах и занимаемом ими месте в дефицитной памяти недорогих микроконтроллеров.

Теперь настала пора поговорить про шрифты немножко подробнее.

Любой символ растрового моноширинного шрифта - это фиксированный прямоугольник, ширина и высота которого определяют размеры символов этого шрифта. Моноширинный шрифт - это такой, у которого для всех символов отведено одно и то же пространство по ширине, будь это узкий символ "!" или широкая буква "Ш".

И символ в этом прямоугольнике ничем не отличается от простой растровой картинки, где на пиксель приходится один бит. 

Таких символов в таблице ASCII - 256. Первые 32 символа - служебные и непечатаемые символы, потом 96 символов - латиница, цифры, знаки препинания и различные спец.символы.

Вторые 128 символов отведены под региональные символы. В частности, кириллица занимает 72 символа.


Рассмотрим несколько методов сохранения шрифтов.

08 августа 2022

Сжатие изображений или Как запихнуть большую картинку в маленький микроконтроллер


Ранее я писал, что применение графических дисплеев в устройствах на микроконтроллерах выводит взаимодействие с пользователем на совершенно другой уровень.
Но цена этого уровня - это гораздо больший объем данных, которые должен хранить и обрабатывать контроллер. 

Если на алфавитно-цифровом дисплее со встроенным знакогенератором для вывода текста нужно сохранить в памяти контроллера только сам текст, то для графического дисплея, кроме самого текста, нужно хранить в памяти еще и шрифт, которым этот текст будет нарисован на дисплее.

Для приведенного выше примера один символ - это 5х7 точек. 35 бит. 5 байт.
Для сохранения первой половины печатных символов ASCII - спец.символы, цифры, большие и маленькие английские буквы - это 96 символов - нужно 5 * 96 = 480 байт.
Если же к этому добавить еще и кириллический алфавит (+72 символа), то получим 840 байт.

Но шрифт 5х7 точек - он маленький, хорош для дисплеев с большим размером пикселей. А современные недорогие и доступные радиолюбителю дисплеи, особенно цветные, имеют достаточно высокую плотность пикселей. Например, TFT IPS дисплей с диагональю 1.51" имеет разрешение 240х240 пикселей. На этом дисплее вышеуказанный текст шрифтом 5х7 точек будет высотой порядка 1 мм.

Кому нужен текст размером в миллиметр?

Соответственно, нужен шрифт побольше. Символ шрифта 14х21 точку занимает 294 бита или 37 байт. 168 символов - это 6216 байт.

А если кроме шрифтов, нужно еще и картинки выводить ?

02 августа 2022

Графика для микроконтроллера - 3 уровня абстракции.

 


Часть устройств, проектируемых на микроконтроллерах, должна взаимодействовать с пользователем. В частности, что то пользователю сообщать, показывать, сигнализировать....
Это может быть один или несколько светодиодов, это может быть 7-сегментный дисплей...
Или алфавитно-цифровой дисплей, позволяющий отобразить пользователю определенный текст.

Но по сути - это все отображение дискретной информации, ограниченной возможностями устройства отображения.
Светодиод может гореть, может не гореть, может мигать. 7-сегментный дисплей может отобразить любую цифру и определенное количество букв. Алфавитно-цифровой дисплей может отобразить любой текст в соответствии с "вшитым" в него знакогенератором. Если дисплей поддерживает загрузку пользовательских символов - тут немножко легче. Можно попытаться добавить недостающие символы. Даже нарисовать какое то изображение при помощи псевдографики.
Но есть такие задачи, когда таких средств  отображения недостаточно.

И тогда на сцену выходят графические дисплеи.
Их много разных. Есть черно-белые, есть цветные. Есть маленькие, есть огромные.

Использование таких дисплеев - сплошные плюсы. Можно отобразить картинку. Можно нарисовать график. Можно вывести текст любым шрифтом и в любом виде. 
Всё, до чего дотянется фантазия разработчика (но в пределах возможностей примененного дисплея).