Ковертер изображения .

victorv
Offline
Зарегистрирован: 31.07.2015

Здравствуйте , вопрос лаймерский , но ... задался целью вывести картинки вместо кнопок- и проблемма .Конвертирую изображение, вставляю в скетч и ошибка -error: size of array 'kran' is too large

 const unsigned short kran[0x5911] ={. Примеров не могу найти как это делать , помогите , дайте ссылку. Спасибо .

Araris
Offline
Зарегистрирован: 09.11.2012

Вы не написали, о какой модели Ардуино речь, поэтому предположу, что массив из 22801-го двубайтного элемента действительно слишком велик и в память не помещается. КО ))).

victorv
Offline
Зарегистрирован: 31.07.2015

mega 2560

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Тут думаю важно как реализован вывод в библиотеке, Вы какую используете, есть там примеры вывода изображений?

Для экранчика от нокии1202 массив выглядит так например, но это просто пример, для Вас нужно смотреть библиотеку.

static const char image_gres[768] PROGMEM =
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x7D, 0x5D, 0x9B,
  0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xED, 0xED, 0x13, 0xFF, 0xFF, 0xFF, 0xFF,
  0x01, 0x6D, 0x6D, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x6D, 0x6D, 0x9B,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01,
  0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
  0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
  0xCF, 0x8F, 0x8F, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x08,
  0x3C, 0x3C, 0xFC, 0xFC, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xBC, 0xBC, 0xFC, 0xFC, 0x7C, 0x7C, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04,
  0x04, 0x04, 0x04, 0x0C, 0x0C, 0x08, 0x08, 0x30, 0x30, 0x40, 0x40, 0x81,
  0x81, 0x01, 0x01, 0x0F, 0x0F, 0x4F, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87,
  0x87, 0x03, 0x03, 0x03, 0x03, 0x0F, 0x0F, 0x8C, 0x8C, 0xE4, 0xE4, 0xE4,
  0xFC, 0xFC, 0xFF, 0xFF, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x1C, 0x1C,
  0x1F, 0x1F, 0xFF, 0xFF, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x80, 0x80,
  0x07, 0x07, 0x07, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xE0, 0x78, 0x78, 0x1C,
  0x1C, 0x84, 0x84, 0xE3, 0xE3, 0xE0, 0xE0, 0x03, 0x03, 0x7F, 0x7F, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x1F, 0x1F, 0xCF, 0xCF, 0xEF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0x07, 0x07, 0x3F, 0x3F, 0xFF, 0xFF, 0xEF, 0xEF, 0xDF, 0xDF, 0x3F,
  0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x08, 0x08,
  0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F,
  0x0F, 0xCF, 0xCF, 0xC7, 0xC7, 0xE1, 0xE1, 0x30, 0x30, 0x38, 0x38, 0xDF,
  0xDF, 0x17, 0x17, 0xF0, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x08, 0xCF,
  0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xF3, 0xF3, 0x1D, 0x1D, 0x03, 0x03, 0xE2,
  0xE2, 0x1F, 0x1F, 0x1D, 0x1D, 0x3D, 0x3D, 0x33, 0x33, 0x33, 0x33, 0xE3,
  0xE3, 0xE3, 0xA1, 0xA1, 0x01, 0x01, 0x10, 0x10, 0x20, 0x20, 0xE0, 0xE0,
  0xE0, 0xE0, 0x10, 0x10, 0x10, 0x10, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE,
  0x0F, 0x83, 0x83, 0x7F, 0x7F, 0x01, 0x01, 0x00, 0x00, 0x8E, 0x8E, 0xFF,
  0xFF, 0x70, 0x70, 0x3F, 0x3F, 0xC3, 0xC3, 0xF0, 0xF0, 0xFE, 0xFE, 0xFD,
  0xF1, 0xF1, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xF9,
  0xF9, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xF8, 0x8E, 0x8E, 0x03,
  0x01, 0x01, 0x0F, 0x0F, 0xF0, 0xF0, 0xFC, 0xFC, 0x00, 0x00, 0x01, 0x01,
  0x03, 0x03, 0x0C, 0x0C, 0xF8, 0xF8, 0xFF, 0xFF, 0xC3, 0xC3, 0xC1, 0xC1,
  0x00, 0x37, 0x37, 0x3C, 0x3C, 0x8C, 0x8C, 0xC6, 0xC6, 0xF3, 0xF3, 0xF9,
  0xF9, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
  0xFF, 0xFF, 0xFC, 0xFC, 0xEF, 0xEF, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, 0xE4,
  0xE7, 0xE7, 0xF3, 0xF3, 0xF3, 0xF3, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8,
  0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

 

victorv
Offline
Зарегистрирован: 31.07.2015

вот параметры изображения

Generated by  : ImageConverter 565 v2.3
 Generated from: kran.JPG
 Time generated: 15.01.2016 14:45:01
 Dimensions    : 151x151 pixels
 Size          : 45 602 Bytes

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Конвертор, конвертором, ВАЖНО как библиотека обрабатывает массив с изображением.

Какую используете библиотеку? Ссылки в студию!

victorv
Offline
Зарегистрирован: 31.07.2015

я делаю так - беру конвертер из библиотеки UTFT , конвертирую и вставляю в папку со скетчем , как например шрифты . Это правильно ?

victorv
Offline
Зарегистрирован: 31.07.2015

может у кого ссылка есть на пример ?

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

В стандартной среде нет этой библиотеки, где Вы ее взяли? Дайте ссылку.

victorv
Offline
Зарегистрирован: 31.07.2015
Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Вот смотрите, по Вашей ссылке, есть на странице ссылка ниже на мануал, там на последней странице функции вывода изображений описаны.

В самой библиотеке еесть папка UTFT\examples\Arduino (AVR)\UTFT_Bitmap и в ней собственно сам пример использования UTFT\examples\Arduino (AVR)\UTFT_Bitmap\UTFT_Bitmap.ino.

В этом примере функция выводит на дисплей изображение, массив которого находится в файлеUTFT\examples\Arduino (AVR)\UTFT_Bitmap\info.c.

В этом примере все можно наглядно посмотреть.

Вы именно этот пример откройте и попробуйте его скомпилировать.

Сорри, маленько накосячил с путями, поправил.

Добавлю еще, попробовал скомпилировать сам, этот пример у меня не влазит в УНО, не хватает памяти. Вот такие вот они, эти графические библиотеки... В Меге компилируется, но в железе проверить не могу, нет у меня этого дисплея.

 

victorv
Offline
Зарегистрирован: 31.07.2015

Gres пишет:

Вот смотрите, по Вашей ссылке, есть на странице ссылка ниже на мануал, там на последней странице функции вывода изображений описаны.

В самой библиотеке еесть папка UTFT\examples\Arduino (AVR)\UTFT_Bitmap и в ней собственно сам пример использования UTFT\examples\Arduino (AVR)\UTFT_Bitmap\UTFT_Bitmap.ino.

В этом примере функция выводит на дисплей изображение, массив которого находится в файлеUTFT\examples\Arduino (AVR)\UTFT_Bitmap\info.c.

В этом примере все можно наглядно посмотреть.

Вы именно этот пример откройте и попробуйте его скомпилировать.

Сорри, маленько накосячил с путями, поправил.

Добавлю еще, попробовал скомпилировать сам, этот пример у меня не влазит в УНО, не хватает памяти. Вот такие вот они, эти графические библиотеки... В Меге компилируется, но в железе проверить не могу, нет у меня этого дисплея.

 

 

на меге у меня тоже говорит размер большой , а другая есть библиотека ?

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Вы именно это пример компилируете? А какая версия среды? Плата верно выбрана?

Только что специально проверил еще раз. Версия среды 1.6.5, открыл этот пример, выбрал мегу, скомпилировал.

Вот лог:

Sketch uses 32 394 bytes (12%) of program storage space. Maximum is 253 952 bytes.
Global variables use 306 bytes (3%) of dynamic memory, leaving 7 886 bytes for local variables. Maximum is 8 192 bytes.

axill
Offline
Зарегистрирован: 05.09.2011

полноцветные изображения для ардуины жирновато. Используйте монохромные или с несколькими цветами (2-8)

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

Добрый день. Вопрос по той же теме. Та же ситуация - при попытке скомпилировать скетч ругается на:

sketch\zhara.c:9:10: error: size of array 'zhara' is too large

 uint32_t zhara[0x5848] PROGMEM ={

          ^

exit status 1
Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.

В то же время Здесь и в примере от UTFT (UTFT\examples\Arduino (AVR)\UTFT_Bitmap\) приведены примеры вывода на много большего по размеру изобрежения чем я использую. Кстати, тот же пример из библиотеки не компилируется: ругается на prog_uint16_t , нужно заменить на const uint16_t. 

Делаю все это на МЕГЕ2560. Дисплей ili9486 480*272. Мелкие изображения (32*32) идут без проблем.  но все что по-крупнее - нет. Хотя в примерах используются изображения даже 240*160.

Максимольное изображение, которое мне удалось загрузить - 170*96 zhara[0x3FC0]. Все что крупнее - ошибка array is too large

В чем проблема?

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

Кроме геометрических размеров (ширина, высота) у изображения есть еще глубина цвета. Поэтому изображения (несжатые) одинакового размера могут требовать объем памяти, отличающийся в десятки раз.

В конце концов, помнится, в школе изучали такую науку - арифметика называется. Если Вы ее вспомните, то легко сможете определять, какое изображение поместится в память, а какое - нет. Формула простая: нужно перемножить между собой ширину, высоту и глубину цвета, после чего поделить на 8 (количество битов в байте). Результат получится в байтах.

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016