vak: (Default)
[personal profile] vak
Платок с процессором ESP32 много разных, но удобнее всего оказываются те, которые с дисплейчиком. Всегда полезно что-нибудь отобразить, что на светодиодах не помещается: имя сети Wi-Fi, адрес IP, счётчики пересылаемых пакетов и т.п. Я использую плату TTGO LoRa32. Экранчик хоть и маленький, меньше сантиметра в высоту, зато довольно яркий и контрастный. Общий вид:



Исходные коды управления дисплеем можно взять здесь: esp-idf/oled/main
Смотрите файлы oled.c, draw.c и oled.h. В этой же папке лежат исходники шрифтов.

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

Я сделал пару утилиток, которые позволяют из любого шрифта в формате TrueType (TTF) или OpenType (OTF) сделать растровое представление в виде компактной Си-структуры. Ниже примеры отображения нескольких популярных шрифтов в разных размерах. Кликайте, чтобы разглядеть в увеличенном виде. Лучше всего смотрится Tahoma. Остальные шрифты терпимо выглядят только в некоторых размерах.

Шрифт Tahoma в размерах 8, 10, 12, 14 и 18 пунктов:

 
 


Шрифт Lucida Sans, и отдельно цифры из него же:

 
 
 
 

Шрифт Verdana:

 
 


Шрифт Georgia:

 
 


Шрифт DejaVu Sans:

 
 


Шрифт DejaVu Sans Condensed:

 
 


Шрифт FreeSans:

 
 


Шрифт Liberation Sans:

 
 


Шрифт Liberation Serif:

 
 


Шрифт Ubuntu Regular:

 
 


Для сравнения, растровые шрифты 5x7 и 6x9, приготовленные из формата BDF:

 

Date: 2019-12-05 18:23 (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
А старые растровые шрифты не проще использовать?

В малом формате лучше всего читается Axel, но его покупать надо.