Чтобы узнать ID контроллера дисплея необходимо загрузить вот этот тестовый скетч
- Код: выделить все
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
// you can also just connect RESET to the arduino RESET pin
#define LCD_RESET A4
//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#include "TFTLCD.h"
TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
void setup(void) {
Serial.begin(9600);
Serial.println("8 Bit LCD test!");
tft.reset();
uint16_t identifier = tft.readRegister(0x0);
Serial.println(identifier, HEX);
// if (identifier == 0x9325)
// {
// Serial.println("Found ILI9325");
// } else if (identifier == 0x9328)
//{
// Serial.println("Found ILI9328");
//} else
// {
// Serial.print("Unknown driver chip ");
// Serial.println(identifier, HEX);
// while (1);
//}
tft.initDisplay();
testtext(RED);
}
void loop(void) {
testFillRoundRect();
delay(1000);
testRoundRect();
delay(1000);
testtriangles();
delay(1000);
testfilltriangles();
delay(1000);
testfillcircles(100, BLUE);
delay(1000);
}
void testFillRoundRect() {
tft.fillScreen(BLACK);
for (uint16_t x=tft.width(); x > 20 ; x-=6) {
tft.fillRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8, tft.Color565(0, x, 0));
}
}
void testRoundRect() {
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8, tft.Color565(x, 0, 0));
}
}
void testtriangles() {
tft.fillScreen(BLACK);
for (uint16_t i=0; i<tft.width()/2; i+=5) {
tft.drawTriangle(tft.width()/2, tft.height()/2-i,
tft.width()/2-i, tft.height()/2+i,
tft.width()/2+i, tft.height()/2+i, tft.Color565(0, 0, i));
}
}
void testfilltriangles() {
tft.fillScreen(BLACK);
for (uint16_t i=tft.width()/2; i>10; i-=5) {
tft.fillTriangle(tft.width()/2, tft.height()/2-i,
tft.width()/2-i, tft.height()/2+i,
tft.width()/2+i, tft.height()/2+i,
tft.Color565(0, i, i));
tft.drawTriangle(tft.width()/2, tft.height()/2-i,
tft.width()/2-i, tft.height()/2+i,
tft.width()/2+i, tft.height()/2+i, tft.Color565(i, i, 0));
}
}
void testtext(uint16_t color) {
tft.fillScreen(BLACK);
tft.setCursor(0, 20);
tft.setTextColor(color);
tft.setTextSize(3);
tft.println("Hello aitendo!");
// tft.setTextSize(3);
//tft.println(1234.56);
//tft.setTextSize(3);
//tft.println(0xDEADBEEF, HEX);
}
void testfillcircles(uint8_t radius, uint16_t color) {
for (uint16_t x=radius; x < tft.width(); x+=radius*2) {
for (uint16_t y=radius; y < tft.height(); y+=radius*2) {
tft.fillCircle(x, y, radius, color);
}
}
}
void testdrawcircles(uint8_t radius, uint16_t color) {
for (uint16_t x=0; x < tft.width()+radius; x+=radius*2) {
for (uint16_t y=0; y < tft.height()+radius; y+=radius*2) {
tft.drawCircle(x, y, radius, color);
}
}
}
void testfillrects(uint16_t color1, uint16_t color2) {
tft.fillScreen(BLACK);
for (uint16_t x=tft.width()-1; x > 6; x-=6) {
//Serial.println(x, DEC);
tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
}
}
void testdrawrects(uint16_t color) {
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
}
}
void testfastlines(uint16_t color1, uint16_t color2) {
tft.fillScreen(BLACK);
for (uint16_t y=0; y < tft.height(); y+=5) {
tft.drawHorizontalLine(0, y, tft.width(), color1);
}
for (uint16_t x=0; x < tft.width(); x+=5) {
tft.drawVerticalLine(x, 0, tft.height(), color2);
}
}
void testlines(uint16_t color) {
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, 0, x, tft.height()-1, color);
}
for (uint16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, 0, tft.width()-1, y, color);
}
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
}
for (uint16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, 0, 0, y, color);
}
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, tft.height()-1, x, 0, color);
}
for (uint16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
}
tft.fillScreen(BLACK);
for (uint16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
}
for (uint16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
}
}
void testBars() {
uint16_t i,j;
for(i=0; i < tft.height(); i++)
{
for(j=0; j < tft.width(); j++)
{
if(i>279) tft.writeData(WHITE);
else if(i>239) tft.writeData(BLUE);
else if(i>199) tft.writeData(GREEN);
else if(i>159) tft.writeData(CYAN);
else if(i>119) tft.writeData(RED);
else if(i>79) tft.writeData(MAGENTA);
else if(i>39) tft.writeData(YELLOW);
else tft.writeData(BLACK);
}
}
}
После его прошивки в контроллер надо зайти в монитор СОМ порта на скорости 9600, через пару секунд в нем появится сообщение с идентификатором дисплея. У меня это выглядит так

- как узнать id tft lcd дисплея
А этих идентификаторов может быть великое множество, вот неполный список для примера:
ILI9320 240x320 ID=0x9320
ILI9325 240x320 ID=0x9325
ILI9327 240x400 ID=0x9327
ILI9329 240x320 ID=0x9329
ILI9335 240x320 ID=0x9335
ILI9341 240x320 ID=0x9341
ILI9481 320x480 ID=0x9481
ILI9486 320x480 ID=0x9486
ILI9488 320x480 ID=0x9488
LGDP4535 240x320 ID=0x4535
RM68090 240x320 ID=0x6809
R61505V 240x320 ID=0xB505
R61505W 240x320 ID=0xC505 new Untested
R61509V 240x400 ID=0xB509
—– S6D0139 240x320 ID=0x0139 removed due to lack of tester
S6D0154 240x320 ID=0x0154
SPFD5408 240x320 ID=0x5408
—– SSD1963 800x480 ID=0x1963 new Untested
SSD1289 240x320 ID=0x1289
ST7781 240x320 ID=0x7783
ST7789V 240x320 ID=0x7789