Сообщений: 885
Своих тем: 8
Рег.: 09-2021
Репутация:
41
(09-04-2025, 21:55)bulat : вместо char поставить unsigned char,а не byte Вроде как компилятор воспринимает одинаково unsigned char, byte, uint8_t, неважно, кто как привык.
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
Не, 176х132 16 бит никак не загрузить в 328-ю. Получается 46кБ. Только 8 бит. Но почему-то вместе с картинкой происходит заливка экрана тенью какой-то.
Мне кажется так не должно быть.
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
(09-04-2025, 10:11)Sam : Диверсия какая-то. Сразу говорил, что это диверсия. И с 8 бит тоже!
Сообщений: 219
Своих тем: 0
Рег.: 09-2021
Репутация:
5
(09-04-2025, 22:25)KEN : unsigned char, byte, uint8_t Так в библиотеке просто char,а между unsigned char, byte, uint8_t я тоже разницы не вижу,дуб-дубом в си
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
Забудьте вы про это, проблема решена. Осталась одна последняя - затенение при 8 бит.
Там будет ещё одна - вывод русского языка, но это я сам попробую решить.
Сообщений: 219
Своих тем: 0
Рег.: 09-2021
Репутация:
5
А код картинки "звезда" можно выложить? если экран просто очистить белым цветом пятно есть?
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
10-04-2025, 06:46
(Сообщение последний раз редактировалось: 10-04-2025, 06:49 Sam.)
Звезды уже нет. Вот есть паук.176х132 8 бит, градации серого.
ПАУК.txt
(Размер: 136.64 KB / Загрузок: 40)
А это скетч(без паука)
Код: #include <Wire.h>
#include <LPH91572.h>
const PROGMEM byte img [] = {
}
//*************************************************************
void setup()
{
Serial.begin(9600);
LCD_init();
LCD_FillScreen(0xfffff);
//Send_Image_PGM(0,0,90,120,img, 90);
LCD_Output_image_PGM(0,0,176,132,img, 90);
}
void LCD_Output_image_PGM (byte x, byte y, byte width, byte height, byte *img, int rot)
{
unsigned char m;
switch (rot)
{
case 0:
Send_Image_PGM (x, y, width, height, img, rot);
break;
//================================
case 90:
m=y; y=x; x=m;
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x40); //Начальный адрес осей Х и У - правый верхний угол дисплея
Send_Image_PGM (x, y, width, height, img, rot);
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x00);
break;
//================================
case 180:
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0xC0); //Начальный адрес осей Х и У - правый нижний угол дисплея
Send_Image_PGM (x, y, width, height, img, rot);
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x00);
break;
//================================
case 270:
m=y; y=x; x=m;
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x80); //Начальный адрес осей Х и У - левый нижний угол дисплея
Send_Image_PGM (x, y, width, height, img, rot);
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x00);
break;
//================================
default:
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x00); //Начальный адрес осей Х и У - левый верхний угол дисплея
Send_Image_PGM (x, y, width, height, img, rot);
Send_to_lcd(CMD, 0x36);
Send_to_lcd(DAT, 0x00);
//=================================
};
}
void Send_Image_PGM (byte x, byte y, byte width, byte height, byte *img, int rot)
{
byte x1, y1;
switch (rot)
{
case 0: case 180:
for(y1=y; y1<(y+height); y1++)
{
SetArea( x, x+(width-1), y1, y1 );
for(x1=x; x1<x+width; x1++)
{
#ifdef _8_BIT_COLOR //(8-ми битовая цветовая палитра (256 цветов))
Send_to_lcd( DAT, pgm_read_byte(img++) ); //Данные - задаём цвет пикселя
#else //(16-ти битовая цветовая палитра (65536 цветов))
Send_to_lcd( DAT, pgm_read_byte(img++) ); Send_to_lcd( DAT, pgm_read_byte(img++) );
#endif
}
}
break;
case 90: case 270:
for(x1=x; x1<x+height; x1++)
{
SetArea( x1, x1, y, y+(width-1) );
for(y1=y; y1<y+width; y1++)
{
#ifdef _8_BIT_COLOR //(8-ми битовая цветовая палитра (256 цветов))
Send_to_lcd( DAT, pgm_read_byte(img++) ); //Данные - задаём цвет пикселя
#else //(16-ти битовая цветовая палитра (65536 цветов))
Send_to_lcd( DAT, pgm_read_byte(img++) ); Send_to_lcd( DAT, pgm_read_byte(img++) );
#endif
}
}
break;
};
}
void loop() {
}
А так выглядит паук 100х100 16бит.
(10-04-2025, 06:09)bulat : пятно есть? Пятен нет. Это отражение...
Сообщений: 164
Своих тем: 0
Рег.: 09-2021
Репутация:
12
Мои поздравления. Осталась самая малость придумать как его приставить к делу.
Ждем продолжения.
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
10-04-2025, 11:26
(Сообщение последний раз редактировалось: 10-04-2025, 11:29 Sam.)
(10-04-2025, 11:08)iharl : Мои поздравления. Не с чем поздравлять.
(10-04-2025, 11:08)iharl : приставить к делу. К делу уже приставлен. Я занялся выводом изображения для того, чтобы у прибора была заставка при включении, и всё.
Пока не решён вопрос с "тенью" при 8 битах.
Пробовал закоментировать эту строчку в библиотеке.
Изо 176х132 8 бит Выводится на пол экрана, искажается сильно, но тени нет.
Как-будто при переключении библиотеки на 8 бит происходит заливка экрана тёмными пикселями.
Сообщений: 2780
Своих тем: 33
Рег.: 08-2021
Репутация:
54
(10-04-2025, 11:26)Sam : заливка экрана тёмными пикселями. Кстати, плохое изо не только при выводе картинки. С тестовым примером(вывод HELLO и заливка разными цветами) то же самое происходит, ничего практически не видно. И ещё идут волны справа-налево(если экран горизонтально).
|