7 октября 2013 г.

Стварэнне выяў для чорна-белых графічных жыдка-крысталічных індыкатараў у GIMP

Пры працы з графічнымі ЖКІ найбольш складаным (маё меркаванне) з'яўляецца стварэнне малюнкаў (а таксама і шрыфтоў) у прыгодным для індыкатара фармаце.

Існуе шмат спецыяльных праграм, каб пераўтварыць выяву ў зыходны код. Адна з іх LCD Image Converter, напрыклад.

Нашчасце, гэта праблема існуе доўгі час і была вырашана радыкальным спосабам. Навошта пераўтвараць малюнкі ў зыходны код? Лепей захоўваць малюнкі адразу ў форме зыходнага коду. Для гэтай мэты быў створаны фармат XBM (X BitMap), а таксама некаторыя іншыя, аднак XBM нас цікавіць зараз болей за іншыя.

Разгледзім паслядоўнасць дзеяў у GIMP каб стварыць малюнак для ЖКІ Sharp LS013B4DN04, прадстаўніка сямейства Sharp Memory LCD з малым спажываннем току.

1. Стварыць малюнак патрэбнага памеру:

Нам патрэбен памер 96 на 96 піксэляў, белы колер асновы (Fill with: White) і чорна-белая палітра (Color space: Grayscale).

2. Выбраць самую маленькую кісць і намаляваць што-небудзь (можна карыстацца усёй моцай графічнага рэдактара)

Калі патрэбна дапаможная сетка, уключыць яе можна ў мяню View -> Show Grid

3. Калі ў ходзе малявання ў вас з'явіліся іншыя колеры, акрамя чорнага і белага, трэба іх ператварыць у чорны ці белы. Гэта проста зрабіць пры дапамозе змены рэжыму Image -> Mode -> Indexed...

Патрэбна аднабітная палітра (black and white (1-bit) palette). Ёсць некалькі алгарытмаў пераўтварэння (Color dithering), паспрабуйце розныя і вызначце той, што спадабаецца вам больш за ўсё.

4. Далей захоўваем малюнак у фармаце XBM

5. Пры экспарце увядзіце імя масіва ў якім будзе малюнак (Identifier prefix)

6. Карыстацца :-) Канчатковы файл уяўляе з сабе зыходны код на мове праграмавання Сі. Ён змяшчае два макраса с памерамі малюнка, а таксама масіў, у якім кожны байт адпавядае 8 кропкам у радку.

#define lcd_gimp_width 96
#define lcd_gimp_height 96
static unsigned char lcd_gimp_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   ...
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

Такім чынам, для малюнка 96 на 96, радок складаецца з 12 байтаў, далей ідуць байты наступнага радка. Гэта значыць, што байты з 0 па 11 дапавядаюць першаму радку на экране індыкатара, з 12 па 23 другому і гэтак далей.

Што атрымалася ў выніку можна пабачыць у пачатку артыкула.

6 комментариев:

  1. Цікава, але не практычна :)

    1. У апісанай вамі паслядоўнасці дзеянняў занадта шмат крокаў.
    2. Гэта прыдатна толькі для могохромных малюнкаў.
    3. У шрыфты могуць быць сотні знакаў. Замардуюць...

    Выбачайце за якасць перакладу.

    ОтветитьУдалить
    Ответы
    1. Згодны з вамі на 100%. Для аднаго-двух малюнкаў можна і так зрабіць.
      Мне здаецца, што патрэба ў графічных шрыфтах для розных моваў зараз стаіць асабліва востра. Асабліва гэта тычыцца азіяцкіх моваў. Даволі цікавае радыкальнае рашэнне - спецыяльныя м/с слоўнікі-алфавіты, яны выдаюць малюнак літары/іерогліфа па коду сімвала Unicode (або іншай кадзіроўкі).
      Прыклад: http://www.genitop.com/Products/index.html
      Маленькая мікрасхема ў корпусе SOT23-6 змяшчае больш сімвалаў чым здолее МК.

      Удалить
    2. Хм, не ведаў пра такое.
      У прынцыпе, такое можна ажыццявіць і на мікракантролеры, з дастатковай вонкавай памяццю, але занадта шмат знакаў трэба маляваць / правяраць.
      Дзякуй за інфармацыю :)

      Удалить
  2. toko perhiasan surabaya2 июля 2022 г. в 05:43

    You really make it seem so easy with your presentation but I find this topic to be actually something which I think I would never understand. It seems too complicated and very broad for me. I’m looking forward for your next post, I will try to get the hang of it! toko perhiasan surabaya

    ОтветитьУдалить
  3. daftar situs slot gacor2 июля 2022 г. в 06:13

    Helⅼo there! This агticlе couldn’t bee written anyy Ƅetter! Looking thrоuցh this post rminds me of my preѵioᥙs roommate! He aⅼwags kept preachіng about this. I am gօing to forward this post to him. Fairly certain he will have a very good read. Many thanks fⲟr sharing! My web page – daftar situs slot gacor

    ОтветитьУдалить
  4. Thank you for provide us very important information we are pleased to read this article.
    slot gacor

    ОтветитьУдалить