Подключение LCD TFT к ARDUINO UNO
#81
(09-04-2025, 21:55)bulat : вместо char поставить unsigned char,а не byte
Вроде как компилятор воспринимает одинаково unsigned char, byte, uint8_t, неважно, кто как привык.
#82
Не, 176х132 16 бит никак не загрузить в 328-ю. Получается 46кБ. Только 8 бит. Но почему-то вместе с картинкой происходит заливка экрана тенью какой-то.
Мне кажется так не должно быть.
   
#83
(09-04-2025, 10:11)Sam : Диверсия какая-то.
Сразу говорил, что это диверсия. И с 8 бит тоже!
#84
(09-04-2025, 22:25)KEN : unsigned char, byte, uint8_t
Так в библиотеке просто char,а между unsigned char, byte, uint8_t я тоже разницы не вижу,дуб-дубом в си 1
#85
Забудьте вы про это, проблема решена. Осталась одна последняя - затенение при 8 бит.
Там будет ещё одна - вывод русского языка, но это я сам попробую решить. 1
#86
А код картинки "звезда" можно выложить? если экран просто очистить белым цветом пятно есть?
#87
Звезды уже нет. Вот есть паук.176х132 8 бит, градации серого.
   

.txt   ПАУК.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 : пятно есть?
Пятен нет. Это отражение...
#88
Мои поздравления. Осталась самая малость придумать как его приставить к делу.
Ждем продолжения.
#89
(10-04-2025, 11:08)iharl : Мои поздравления.
Не с чем поздравлять.
(10-04-2025, 11:08)iharl : приставить к делу.
К делу уже приставлен. Я занялся выводом изображения для того, чтобы у прибора была заставка при включении, и всё.
Пока не решён вопрос с "тенью" при 8 битах.
Пробовал закоментировать эту строчку в библиотеке.
   
Изо 176х132 8 бит Выводится на пол экрана, искажается сильно, но тени нет.
Как-будто при переключении библиотеки на 8 бит происходит заливка экрана тёмными пикселями.
#90
(10-04-2025, 11:26)Sam : заливка экрана тёмными пикселями.
Кстати, плохое изо не только при выводе картинки. С тестовым примером(вывод HELLO и заливка разными цветами) то же самое происходит, ничего практически не видно. И ещё идут волны справа-налево(если экран горизонтально).