Вывод изображения на TFT 1.8 через Adafruit библиотеку

Всем привет!
Есть изображение в .bmp, сконвертировал его в код в файл .c, пытаюсь вывести на дисплей, выводится какая-то фигня.
Думаю, что что-то не так настраиваю в конверторе. Их большое множество. И там либо не понятно что именно нужно указать, либо вообще никаких настроек нет.
Поэтому прошу посмотреть и подсказать что мне нужно искать или вообще в какую сторону информацию копать.

Должно быть:
mesto

А выводится:

Основной скетч:

#include <Adafruit_GFX.h>  
#include <Adafruit_ST7735.h> 

#define TFT_CS     42
#define TFT_RST    53 
#define TFT_DC     9

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

#define TFT_SCLK 52   // Пин SCL
#define TFT_MOSI 51   // Пин SDA

extern uint8_t BMP01[];

void setup(void) {
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.setRotation(3);//Альбомная ориентация
  tft.fillScreen(ST7735_BLACK);//Очистить дисплей

  tft.drawBitmap(50, 40, BMP01, 50, 40, ST7735_WHITE);
}

void loop() {
}

Файл с изображением (BMP01.c):

//------------------------------------------------------------------------------
// File generated by LCD Assistant
// http://en.radzio.dxp.pl/bitmap_converter/
//------------------------------------------------------------------------------

const unsigned char BMP01 [] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x0F,
0x1F, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x38,
0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 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, 0x9F,
0x3F, 0x3F, 0x3F, 0x3E, 0x38, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00,
0x00, 0x00, 0x80, 0xC0, 0x60, 0x38, 0x3C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x5F, 0x47, 0x41, 0x40,
0x00, 0x21, 0x21, 0x23, 0x22, 0x06, 0x1C, 0x1C, 0x18, 0x10, 0x31, 0x32, 0x7C, 0xF0, 0xC0, 0xC0,
0x20, 0x18, 0x06, 0x07, 0x05, 0x04, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x01, 0x01, 0x01,
0x03, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
0xC0, 0xC1, 0xC1, 0xC3, 0xC2, 0xC6, 0xCC, 0xCC, 0xD8, 0xF0, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xFF, 0xFF, 0xFF, 
};

Попробуйте сделать bmp 2х2 или 4x4 (максимум 8х8) и лупу возьмите, там всё будет понятно, разберётесь как конвертировать а потом уж большую картинку дёргайте.

1 лайк

Мне кажется, начинать нужно с того, что разобраться, как рисунок кодируется на экране и в файле.

  1. Судя по той картинке, что Вы выложили, массив должен начинаться и кончаться нулями, а у Вас в массиве 0xff.
  2. У Вас картинка монохромная, а дисплей цветной. Значит, где-то должна быть перекодировка. Вы уверены, что drawBitmap() это делает?

может на старом форуме что почерпнёте

0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,
0X3F,0XFE,0X00,0X00,0X00,0X00,0X7F,0XFF,0X00,0X00,0X00,0X00,0XFE,0X7F,0X00,0X00,
0X00,0X01,0XF8,0X1F,0X80,0X00,0X00,0X01,0XF0,0X0F,0X80,0X00,0X00,0X01,0XE0,0X07,
0XC0,0X00,0X00,0X03,0XE0,0X07,0XC0,0X00,0X00,0X03,0XE0,0X07,0XC0,0X00,0X00,0X03,
0XE0,0X07,0XC0,0X00,0X00,0X03,0XE0,0X07,0XC0,0X00,0X00,0X01,0XF0,0X07,0XC0,0X00,
0X00,0X01,0XF8,0X0F,0X80,0X00,0X00,0X01,0XFC,0X3F,0X80,0X00,0X00,0X00,0XFF,0XFF,
0X00,0X00,0X00,0X00,0X7F,0XFF,0X00,0X00,0X00,0X00,0X3F,0XFE,0X00,0X00,0X00,0X00,
0X1F,0XFC,0X00,0X00,0X00,0X1F,0X1F,0XF8,0X7E,0X00,0X00,0X0F,0X8F,0XF1,0XFF,0X00,
0X00,0X83,0XC7,0XE3,0XC0,0X00,0X00,0XE0,0XE3,0XE0,0X00,0X00,0X01,0XF8,0X73,0XC0,
0X0F,0X80,0X01,0XFE,0X11,0X87,0XFF,0X80,0X03,0XF0,0X01,0X8F,0XFF,0XC0,0X00,0X00,
0X00,0X1F,0XFF,0XC0,0X00,0X07,0XE0,0X3F,0XFF,0XE0,0X01,0XFF,0XF8,0X3F,0XFF,0XE0,
0X07,0XFF,0XFE,0X0F,0XFF,0XF0,0X0F,0XFF,0XFF,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XC0,
0XFF,0XF0,0X1F,0XFF,0XFF,0XF0,0X7F,0XFC,0X1F,0XFF,0XFF,0XFE,0X1F,0XFC,0X1F,0XFF,
0XFF,0XFE,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};```
Массив картинки 48*40 пикселей.
1 лайк

Спасибо Вам большое!
Ваш массив отображается корректно и теперь я точно знаю, что проблема не в моем коде, а в том что я не правильно конвертирую картинку.

Подскажите, в какой программе Вы это сделали?


Вот этот конвертер, рекомендованный Евгением П. Где качал не помню. На картинке выставлены настройки для вашего случая.

1 лайк

Спасибо Вам огромное!
Вы сэкономили мое время и я был бы рад отблагодарить Вас через банковскую карту!
Пришлите номер на david.ne@mail.ru

Это хобби-любительство, а потому денег не беру :slight_smile:

1 лайк

А можете на почту конвертер прислать?
(в сети вообще его найти не могу)

Архив выслал.

1 лайк

по названию проги, вверху картинки, она нашлась в первой строке поиска.

неправильные пчёлы и неправильный мёд

Не разглашайте секретов! А то как потом “благодарность” зарабатывать будем? :slight_smile:


Если в букавках разбираетесь, заметите что там у них разный порядок в названиях…

image2lcd v2.9