Библиотека U8glib несколько вопросов

forfrends
Offline
Зарегистрирован: 24.02.2015

Всем добрый день. Имеется дисплей на контроллере SSD1306 128X32 пикселей. Библиоека работает без проблем. Но есть несколько вопросов:

1) как создать собственный шрифт? Встроенные шрифты меня не устраивают по нескольким причинам: мне нужны только цифры и несколько символов. Имеющиеся встроенные символьные шрифты мне не нравятся, а те что нравятся, занимают слишком много памяти МК, так как подгрушается весь шрифт полностью (все символы) а мне нужно всего 12-13 символов.

2) как конвертировать BMP картинки в код? Попробовал программу Image2Code.exe - на выходе получаю код с содержимым типа:

0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF....

где 0xFF и 0x00 - каждый отдельный пиксель картинки, вто время как Библиотека U8glib воспринимает 0xFF как 8 "заполненных" точек, а 0x00 - 8 пустых точек.

Пробовал разными командами:

u8g.drawXBMP(x, y, width, height, u8g_logo_bits);

и

u8g.drawBitmap( x, y, width, height, my_bitmap);

результат один и тот же: 0xFF как 8 "заполненных" точек, а 0x00 - 8 пустых точек. И картинка не получается. Чем сконвертировать обычную черно-белую BMP картинку?

forfrends
Offline
Зарегистрирован: 24.02.2015

C конвертированием разобрался - конвертирую катринки в XBM программой Xnview

А вот со шрифтом пока никак. Надеюсь на вашу помощь

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. Конвертировать нужно не в 8-битный, а в 1-битный цвет.

2. Строго говоря, библиотека будет нормально работать лишь в том случае, когда коды символов идут подряд. Кстати, на этот случай обычно используется фонт с 13-ю символами. Можете сами обрезать существующий. Для этого нужно выкинуть все лишнее из начала и конца файла (не трогая первых четырех байтов заголовка), а также подправить заголовок. Если мне не изменяет память, вместа числа 0x20 нужно подставить номер первго символа в Вашем новом шрифте, а вместо 0x5F подставить количество символов в шрифте.

forfrends
Offline
Зарегистрирован: 24.02.2015

Со встроенным шрифтом это будет немного сложно сделать... вот один из шрифтов (для примера):

/*
  Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1
  Copyright: 19992003 / yuji oshimoяo / 04@dsg4.com / www.04.jp.org
  Capital A Height: 5, '1' Height: 5
  Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5
  Font Bounding box     w= 5 h= 6 x= 0 y=-1
  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
  Pure Font   ascent = 5 descent=-1
  X Font      ascent = 5 descent=-1
  Max Font    ascent = 5 descent=-1
*/
#include "u8g.h"
const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_FONT_SECTION("u8g_font_04b_03b") = {
  1,5,6,0,255,5,0,250,1,240,32,255,255,5,255,5,
  255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160,
  160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80,
  224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144,
  240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37,
  53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64,
  224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2,
  85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2,
  37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2,
  69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2,
  69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2,
  69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2,
  69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36,
  128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224,
  0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112,
  0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240,
  144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128,
  128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240,
  128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176,
  144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64,
  64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224,
  144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168,
  168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144,
  144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144,
  176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240,
  16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144,
  144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168,
  168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240,
  16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128,
  128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,
  64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64,
  2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67,
  224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112,
  2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68,
  84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128,
  0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128,
  128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67,
  83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144,
  240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52,
  68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144,
  96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84,
  144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128,
  64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32,
  64,192,5,66,82,80,160,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,2,0,64,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255};

Отредактировать такой шрифт для меня сложно...