roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 22:53

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 14 дек 2007, 11:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
пишу собственную библу для работы с MT-12232

вобщем-то большую часть передрал с других библиотек,
сложности возникли со своими: lcd::bitmap();
никак не пойму почему так происходит:


чтоб не качать все исходники привожу куски кода.

Код:
namespace bitmaps
{
   /* 6x8
    * [*   **]
    * [*  * *]
    * [* *  *]
    * [**   *]
    * [**   *]
    * [* *  *]
    * [*  * *]
    * [*   **]
    */
   uint8_t PROGMEM c1_bmp__data[] = {
      0xff, 0x18, 0x24, 0x42, 0x81, 0xff
   };
   bitmap_pt c1_bmp = {6, 8, c1_bmp__data};
   
   /* 6x16
    * [*   **]
    * [*  * *]
    * [* *  *]
    * [**   *]
    * [**   *]
    * [* *  *]
    * [*  * *]
    * [*   **]
    * [**   *]
    * [* *  *]
    * [*  * *]
    * [*   **]
    * [*   **]
    * [*  * *]
    * [* *  *]
    * [**   *]
    */
   uint8_t PROGMEM c2_bmp__data[] = {
      0xff, 0x18, 0x24, 0x42, 0x81, 0xff,
      0xff, 0x81, 0x42, 0x24, 0x18, 0xff
   };
   bitmap_pt c2_bmp = {6, 16, c2_bmp__data};
}

lcd glcd;

int main(void)
{
   glcd.bitmap(0,   0,   &bitmaps::c2_bmp);
   glcd.bitmap(6,   1,   &bitmaps::c2_bmp);
   glcd.bitmap(12,   2,   &bitmaps::c2_bmp);
   glcd.bitmap(18,   3,   &bitmaps::c2_bmp);
   glcd.bitmap(24,   4,   &bitmaps::c2_bmp);
   glcd.bitmap(30,   5,   &bitmaps::c2_bmp);
   glcd.bitmap(36,   6,   &bitmaps::c2_bmp);
   glcd.bitmap(42,   7,   &bitmaps::c2_bmp);
   glcd.bitmap(48,   8,   &bitmaps::c2_bmp);
   glcd.bitmap(54,   9,   &bitmaps::c2_bmp);
   glcd.bitmap(60,   10,   &bitmaps::c2_bmp);
   glcd.bitmap(66,   11,   &bitmaps::c2_bmp);
   glcd.bitmap(72,   12,   &bitmaps::c2_bmp);
   glcd.bitmap(78,   13,   &bitmaps::c2_bmp);
   glcd.bitmap(84,   14,   &bitmaps::c2_bmp);
   glcd.bitmap(90,   15,   &bitmaps::c2_bmp);
   glcd.bitmap(96,   16,   &bitmaps::c2_bmp);
   glcd.update();

   while(1)
      wdt_reset();
   return 0;
};


Код:
void lcd::bitmap(uint8_t left, uint8_t top, bitmap_t *bmp, operation_t op)
{
   uint8_t *dat, *p1, *p2;
   uint8_t x, y;
   uint8_t tt;
   uint16_t t1, t2;
   
   tt = top % 8;
   dat = bmp->data;
   
   for(y=(top>>3); y <= ((top+bmp->heigth-1)>>3); y++)
      for(x=left; x <= (left+bmp->width-1); x++)
      {
         t1 = pgm_read_byte(dat++);
         t2 = 0xff;
         switch(op)
         {
            case OP_NORMALL:
               break;
            case OP_INV:
               t1 = 0xff & ~t1;
               break;
            case OP_SET:
            case OP_OR:
            case OP_CLEAR:
            case OP_AND:
            case OP_XOR:
               break;
         }
         if(tt)
         {
            t1 <<= tt;
            t2 <<= tt;
            t2 = ~t2;
            p1 = (uint8_t*) &t1;
            p2 = (uint8_t*) &t2;
            rmw(x, y,   *p1,      *p2);
            rmw(x, y+1,   *(p1+1),   *(p2+1));
         }
         else
         {
            rmw(x, y, (uint8_t)t1, 0x00);
         }
      }
}


Код:
      /**
       * Изменить набор пикселей ( \a x ; \a 0+8*y ) -> ( \a x ; \a 7+8*y )
       * \f[ w = (r \and clear_mask) \or mask \f]
       * \param x
       * \param y range(4) -> (0, 1, 2, 3)
       * \param mask
       * \param clear_mask
       * \return pixels state
       */
      uint8_t rmw(uint8_t x, uint8_t y, uint8_t mask, uint8_t clear_mask);

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 16 дек 2007, 20:20 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
А что должно получиться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 18 дек 2007, 16:48 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
наверно должно получится библиотека для рисования всякой графики на графическом дисплее =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 22 дек 2007, 17:50 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Могу я узнать почему название библиотеки GLCD? Просто както странно совпадает с названиями моих библиотек начинающихся на G.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 22 дек 2007, 17:55 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Да, да.. и Google тоже на G =)

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 22 дек 2007, 18:38 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
от сокращения Graphical LCD т.к. библа для графических дисплеев, чего тут странного?
также как и библа для работы с USART'ом у меня называется USART и дает два неймспейса usart0 и usart1

Добавлено спустя 5 минут 27 секунд:
а вобще ближе к теме плиз.
редакция пока таже, у меня сейчас работы полно, некогда...

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GLCD lib пишу
СообщениеДобавлено: 22 дек 2007, 18:44 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Виталий писал(а):
Да, да.. и Google тоже на G =)
+1
Нужно зараннее расшифровывать)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 24 дек 2007, 01:56 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
немного переписал копию под ПК GCC(G++)
добавил debug_driver и начал колдовать...
получилось и упростить и главное заставить работать правильно.

Код:
Display:
{
#...##....................................................................................................................
#..#.##...##..............................................................................................................
#.#..##..#.##...##........................................................................................................
##...##.#..##..#.##...##..................................................................................................
##...###...##.#..##..#.##...##............................................................................................
#.#..###...###...##.#..##..#.##...##......................................................................................
#..#.##.#..###...###...##.#..##..#.##...##................................................................................
#...###..#.##.#..###...###...##.#..##..#.##...##..........................................................................
##...##...###..#.##.#..###...###...##.#..##..#.##...##....................................................................
#.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##..............................................................
#..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##........................................................
#...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##..................................................
#...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##............................................
#..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##......................................
#.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##................................
##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##..........................
......##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.##...##....................
............##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..##..#.#....................
..................##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...##.#..#....................
........................##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...###...#....................
..............................##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..###...#....................
....................................##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.##.#..#....................
..........................................##...##.#..##..#.##...###...###..#.##.#..###...##...###..#.#....................
................................................##...##.#..##..#.##...###...###..#.##.#..###...##...##....................
......................................................##...##.#..##..#.##...###...###..#.##.#..###...#....................
............................................................##...##.#..##..#.##...###...###..#.##.#..#....................
..................................................................##...##.#..##..#.##...###...###..#.#....................
........................................................................##...##.#..##..#.##...###...##....................
..............................................................................##...##.#..##..#.##...##....................
....................................................................................##...##.#..##..#.#....................
..........................................................................................##...##.#..#....................
................................................................................................##...#....................
}


потом, когда доделаю вывод шрифтов (+конвертор)
наверно выложу в паблик

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 24 дек 2007, 12:22 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
А что это в окошке с кодом? :shock:
Очень похоже на слабозаполненную ленточную матрицу. Может её можно упаковать?

_________________
I live My life!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 24 дек 2007, 14:16 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
это отладочный вывод фрейм-буффера в stdout

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 25 дек 2007, 10:59 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
Ёклмн. Это ASCII скриншот! :) И как я сразу не догадался. :(

_________________
I live My life!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 25 дек 2007, 11:10 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
я немного подправил его - убрал номера строк, из-за них на маленьких разрешениях экрана строки расползались
и ессно что было непонятно.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 27 дек 2007, 04:35 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Начал писать конверторы, но есть проблема - как наилучшим образом преобразовать серый RGB в BW 1 бит?

Вложение:
Комментарий к файлу: исходник
2.png
2.png [ 1.72 КиБ | Просмотров: 2152 ]
Вложение:
Комментарий к файлу: скрин результата
i2_png.png
i2_png.png [ 1.33 КиБ | Просмотров: 2149 ]
Вложение:
Комментарий к файлу: конвертор
image2bitmap.py [3.13 КиБ]
Скачиваний: 263

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 27 дек 2007, 14:13 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
Для сглаживания буквов можно попробовать утолщение-утончение, но для этого придется изображение векторизовать. Если нужно уменьшить кол-во мусора без векторизации, то используют математическую морфологию, логическую фильтрацию, замыкание-отмыкание и пр. Но чтоб написать такой фильтр самому нужно посидеть. Может лучше в каком-нибудь готовом редакторе перед бинаризацией с контрастностью побаловаться, да потом вручную подчистить? Ведь изображения-то наверняка загружаются не оптом.

_________________
I live My life!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Graph. LCD lib пишу [fixed]
СообщениеДобавлено: 27 дек 2007, 17:17 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Vooon писал(а):
Начал писать конверторы, но есть проблема - как наилучшим образом преобразовать серый RGB в BW 1 бит?


Рисовать сразу в BW. Для текста выбрать более подходящий шрифт, например Tahoma. А для преобразования можно взять ImageMagic. Картинки можно хранить например в xpm ;) Тогда инклюдить в код вообще не проблема


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO