
I am trying to use TFT LCD Display ILI9486/ILI9488 480x320 with Arduino Due. The display is showing blank white screen. My test program compiles and uploads without any error. However, LCD display remains blank with white screen.

I installed the libray of MCUFRIEND_kbv library and Adafruit_GFX via the Library Manager,but the problem remains same ,even it is compile and uplode very well but still screen display the White screen…

#include //touch library#include //Core graphics library#include //Hardware-specific library//if the IC model is known or the modules is unreadable,you can use this constructed functionLCDWIKI_KBV my_lcd(ILI9486,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset//if the IC model is not known and the modules is readable,you can use this constructed function//LCDWIKI_KBV my_lcd(320,480,A3,A2,A1,A0,A4);//width,height,cs,cd,wr,rd,reset#define YP A3// must be an analog pin, use "An" notation!#define XM A2// must be an analog pin, use "An" notation!#define YM 9// can be a digital pin#define XP 8// can be a digital pin//param calibration from kbv#define TS_MINX 906#define TS_MAXX 116#define TS_MINY 92#define TS_MAXY 952// For better pressure precision, we need to know the resistance// between X+ and X- Use any multimeter to read it// For the one we"re using, its 300 ohms across the X plateTouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);#define BLACK 0x0000#define BLUE 0x001F#define RED 0xF800#define GREEN 0x07E0#define CYAN 0x07FF#define MAGENTA 0xF81F#define YELLOW 0xFFE0#define WHITE 0xFFFFuint16_t color_mask[] = {0xF800,0xFFE0,0x07E0,0x07FF,0x001F,0xF81F}; //color select#define COLORBOXSIZE my_lcd.Get_Display_Width()/6#define PENBOXSIZE my_lcd.Get_Display_Width()/4int16_t old_color, current_color,flag_colour;int16_t old_pen,current_pen,flag_pen;boolean show_flag = true;void show_string(uint8_t *str,int16_t x,int16_t y,uint8_t csize,uint16_t fc, uint16_t bc,boolean mode){my_lcd.Set_Text_Mode(mode);my_lcd.Set_Text_Size(csize);my_lcd.Set_Text_colour(fc);my_lcd.Set_Text_Back_colour(bc);my_lcd.Print_String(str,x,y);}//show color select menuvoid show_color_select_menu(void){uint16_t i;for(i = 0;i<6;i++){my_lcd.Set_Draw_color(color_mask[i]);my_lcd.Fill_Rectangle(i*COLORBOXSIZE, 0, (i+1)*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}my_lcd.Set_Draw_color(GREEN);my_lcd.Fill_Round_Rectangle((my_lcd.Get_Display_Width()-20)/3+10, COLORBOXSIZE/2+2, (my_lcd.Get_Display_Width()-20)/3*2+10,COLORBOXSIZE/2+20, 5);show_string("OK",CENTER,COLORBOXSIZE/2+4,2,RED, BLACK,1);}//show pen size select menuvoid show_pen_size_select_menu(void){uint16_t i;my_lcd.Set_Text_Mode(1);my_lcd.Set_Text_Size(2);my_lcd.Set_Text_colour(GREEN);my_lcd.Set_Text_Back_colour(BLACK);for(i = 0;i<4;i++){my_lcd.Print_Number_Int(i+1, 5+PENBOXSIZE*i, (COLORBOXSIZE/2-16)/2, 0, " ",10);my_lcd.Set_Draw_color(RED);my_lcd.Fill_Rectangle(25+PENBOXSIZE*i, COLORBOXSIZE/2/2-i, PENBOXSIZE*(i+1)-10, COLORBOXSIZE/2/2+i);}my_lcd.Set_Draw_color(GREEN);my_lcd.Fill_Round_Rectangle((my_lcd.Get_Display_Width()-20)/3+10, COLORBOXSIZE/2+2, (my_lcd.Get_Display_Width()-20)/3*2+10,COLORBOXSIZE/2+20, 5);show_string("OK",CENTER,COLORBOXSIZE/2+4,2,RED, BLACK,1);}//show main menuvoid show_main_menu(void){my_lcd.Set_Draw_color(YELLOW);my_lcd.Fill_Round_Rectangle(5, 0, (my_lcd.Get_Display_Width()-20)/3+5,COLORBOXSIZE/2+20, 5);my_lcd.Fill_Round_Rectangle((my_lcd.Get_Display_Width()-20)/3*2+15, 0, (my_lcd.Get_Display_Width()-20)/3*3+15,COLORBOXSIZE/2+20, 5);my_lcd.Set_Draw_color(MAGENTA);my_lcd.Fill_Round_Rectangle((my_lcd.Get_Display_Width()-20)/3+10, 0, (my_lcd.Get_Display_Width()-20)/3*2+10,COLORBOXSIZE/2+20, 5);show_string("COLOUR",5+((my_lcd.Get_Display_Width()-20)/3-72)/2-1,((COLORBOXSIZE/2+20)-16)/2,2,BLUE, BLACK,1);show_string("CLEAR",(my_lcd.Get_Display_Width()-20)/3+10+((my_lcd.Get_Display_Width()-20)/3-60)/2-1,((COLORBOXSIZE/2+20)-16)/2,2,WHITE, BLACK,1);show_string("PENSIZE",(my_lcd.Get_Display_Width()-20)/3*2+15+((my_lcd.Get_Display_Width()-20)/3-84)/2-1,((COLORBOXSIZE/2+20)-16)/2,2,BLUE, BLACK,1);}void setup(void){Serial.begin(9600);my_lcd.Init_LCD();Serial.println(my_lcd.Read_ID(), HEX);my_lcd.Fill_Screen(BLACK);show_main_menu();current_color = RED;current_pen = 0;pinMode(13, OUTPUT);/*tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);currentcolor = RED;pinMode(13, OUTPUT);//tft.fillRect(0, 80, 240, 20, RED);tft.setCursor(0, 80);tft.setTextColor(RED); tft.setTextSize(1);tft.println("Hello World!");tft.println(01234.56789);*/}#define MINPRESSURE 10#define MAXPRESSURE 1000void loop(){comme:digitalWrite(13, HIGH);TSPoint p = ts.getPoint();digitalWrite(13, LOW);pinMode(XM, OUTPUT);pinMode(YP, OUTPUT);if (p.z > MINPRESSURE && p.z < MAXPRESSURE){if (p.y < (TS_MINY-5)){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0, COLORBOXSIZE, my_lcd.Get_Display_Width()-1, my_lcd.Get_Display_Height()-1);}//p.x = my_lcd.Get_Display_Width()-map(p.x, TS_MINX, TS_MAXX, my_lcd.Get_Display_Width(), 0);//p.y = my_lcd.Get_Display_Height()-map(p.y, TS_MINY, TS_MAXY, my_lcd.Get_Display_Height(), 0);p.x = map(p.x, TS_MINX, TS_MAXX, my_lcd.Get_Display_Width(), 0);p.y = map(p.y, TS_MINY, TS_MAXY, my_lcd.Get_Display_Height(),0);if(p.y < COLORBOXSIZE/2+20){if(((p.x>5)&&(p.x < ((my_lcd.Get_Display_Width()-20)/3+5)))&&!flag_pen) //select color{flag_colour = 1;if(show_flag){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0,0,my_lcd.Get_Display_Width()-1,COLORBOXSIZE/2+20);show_color_select_menu();}show_flag = false;switch(current_color){case RED:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(0, 0, COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case YELLOW:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(COLORBOXSIZE, 0, 2*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case GREEN:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(2*COLORBOXSIZE, 0, 3*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case CYAN:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(3*COLORBOXSIZE, 0, 4*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case BLUE:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(4*COLORBOXSIZE, 0, 5*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case MAGENTA:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(5*COLORBOXSIZE, 0, 6*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}default:break;}}if(flag_colour){if(p.y < COLORBOXSIZE/2){old_color = current_color;if (p.x < COLORBOXSIZE){current_color = RED;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(0, 0, COLORBOXSIZE-1, COLORBOXSIZE/2-1);}else if (p.x < COLORBOXSIZE*2){current_color = YELLOW;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(COLORBOXSIZE, 0, 2*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}else if (p.x < COLORBOXSIZE*3){current_color = GREEN;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(2*COLORBOXSIZE, 0, 3*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}else if (p.x < COLORBOXSIZE*4){current_color = CYAN;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(3*COLORBOXSIZE, 0, 4*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}else if (p.x < COLORBOXSIZE*5){current_color = BLUE;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(4*COLORBOXSIZE, 0, 5*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}else if (p.x < COLORBOXSIZE*6){current_color = MAGENTA;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(5*COLORBOXSIZE, 0, 6*COLORBOXSIZE-1, COLORBOXSIZE/2-1);}if(old_color != current_color){switch(old_color){case RED:{my_lcd.Set_Draw_color(RED);my_lcd.Draw_Rectangle(0, 0, COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case YELLOW:{my_lcd.Set_Draw_color(YELLOW);my_lcd.Draw_Rectangle(COLORBOXSIZE, 0, 2*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case GREEN:{my_lcd.Set_Draw_color(GREEN);my_lcd.Draw_Rectangle(2*COLORBOXSIZE, 0, 3*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case CYAN:{my_lcd.Set_Draw_color(CYAN);my_lcd.Draw_Rectangle(3*COLORBOXSIZE, 0, 4*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case BLUE:{my_lcd.Set_Draw_color(BLUE);my_lcd.Draw_Rectangle(4*COLORBOXSIZE, 0, 5*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}case MAGENTA:{my_lcd.Set_Draw_color(MAGENTA);my_lcd.Draw_Rectangle(5*COLORBOXSIZE, 0, 6*COLORBOXSIZE-1, COLORBOXSIZE/2-1);break;}default:break;}}}else if(p.y < COLORBOXSIZE/2+20){if((p.x>(my_lcd.Get_Display_Width()-20)/3+10)&&(p.x<(my_lcd.Get_Display_Width()-20)/3*2+10)){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0,0,my_lcd.Get_Display_Width()-1,COLORBOXSIZE/2+20);show_main_menu();flag_colour = 0;show_flag = true;goto comme;}}}if(((p.x>((my_lcd.Get_Display_Width()-20)/3*2+15))&&(p.x < (((my_lcd.Get_Display_Width()-20)/3*3+15))))&&!flag_colour) //select pen size{flag_pen = 1;if(show_flag){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0,0,my_lcd.Get_Display_Width()-1,COLORBOXSIZE/2+20);show_pen_size_select_menu();}show_flag = false;switch(current_pen){case 0:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(0, 0, PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 1:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(PENBOXSIZE, 0, 2*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 2:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(2*PENBOXSIZE, 0, 3*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 3:{my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(3*PENBOXSIZE, 0, 4*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}default:break;}}if(flag_pen){if(p.y < COLORBOXSIZE/2){old_pen = current_pen;if(p.x < PENBOXSIZE){current_pen = 0;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(0, 0, PENBOXSIZE-1, COLORBOXSIZE/2-1);}else if(p.x < 2*PENBOXSIZE){current_pen = 1;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(PENBOXSIZE, 0, 2*PENBOXSIZE-1, COLORBOXSIZE/2-1);}else if(p.x < 3*PENBOXSIZE){current_pen = 2;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(2*PENBOXSIZE, 0, 3*PENBOXSIZE-1, COLORBOXSIZE/2-1);}else if(p.x < 4*PENBOXSIZE){current_pen = 3;my_lcd.Set_Draw_color(WHITE);my_lcd.Draw_Rectangle(3*PENBOXSIZE, 0, 4*PENBOXSIZE-1, COLORBOXSIZE/2-1);}if(old_pen != current_pen){switch(old_pen){case 0:{my_lcd.Set_Draw_color(BLACK);my_lcd.Draw_Rectangle(0, 0, PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 1:{my_lcd.Set_Draw_color(BLACK);my_lcd.Draw_Rectangle(PENBOXSIZE, 0, 2*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 2:{my_lcd.Set_Draw_color(BLACK);my_lcd.Draw_Rectangle(2*PENBOXSIZE, 0, 3*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}case 3:{my_lcd.Set_Draw_color(BLACK);my_lcd.Draw_Rectangle(3*PENBOXSIZE, 0, 4*PENBOXSIZE-1, COLORBOXSIZE/2-1);break;}default:break;}}}else if(p.y < COLORBOXSIZE/2+20){if((p.x>(my_lcd.Get_Display_Width()-20)/3+10)&&(p.x<(my_lcd.Get_Display_Width()-20)/3*2+10)){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0,0,my_lcd.Get_Display_Width()-1,COLORBOXSIZE/2+20);show_main_menu();flag_pen = 0;show_flag = true;goto comme;}}}if(((p.x>((my_lcd.Get_Display_Width()-20)/3+10))&&(p.x < ((my_lcd.Get_Display_Width()-20)/3*2+10)))&&!flag_colour&&!flag_pen){my_lcd.Set_Draw_color(BLACK);my_lcd.Fill_Rectangle(0,COLORBOXSIZE,my_lcd.Get_Display_Width()-1,my_lcd.Get_Display_Height()-1);}}if (((p.y-current_pen) > COLORBOXSIZE/2+20) && ((p.y+current_pen) < my_lcd.Get_Display_Height())) //drawing{my_lcd.Set_Draw_color(current_color);// if(1 == current_pen)// {// my_lcd.Draw_Pixel(p.x, p.y);// }// else// {my_lcd.Fill_Circle(p.x, p.y,current_pen);// }}}}

This new library is a standalone library that contains the TFT driver as well as the graphics functions and fonts that were in the GFX library. This library has significant performance improvements when used with an UNO (or ATmega328 based Arduino) and MEGA.
Examples are included with the library, including graphics test programs. The example sketch TFT_Rainbow_one shows different ways of using the font support functions. This library now supports the "print" library so the formatting features of the "print" library can be used, for example to print to the TFT in Hexadecimal, for example:
To use the F_AS_T performance option the ILI9341 based display must be connected to an MEGA as follows:MEGA +5V to display pin 1 (VCC) and pin 8 (LED) UNO 0V (GND) to display pin 2 (GND)
In the library Font 0 (GLCD font), 2, 4, 6 and 8 are enabled. Edit the Load_fonts.h file within the library folder to enable/disable fonts to save space.
TFT_ILI9341 library updated on 1st July 2015 to version 12, this latest version is attached here to step 8:Minor bug when rendering letter "T" in font 4 without background fixed

I am completely new to Arduino. I have been given a side project to display a image from SD card to display. LCD used is ILI9486 which has a SD card slot at the back of the display module. I have inserted an 1 GB micro SD card. I am using below example code to try to open the SD card and display the image on display module. I am getting error on serial monitor "Initializing sd card - failed". Can anyone let me know how to display image from SD card to screen.

The 3.5 inch TFT LCD Touch Display Shield for Arduino Uno is fully assembled, tested and ready to go. Add the touch display without wiring, no soldering! Simply plug it in and load up a library – you’ll have it running in under 10 minutes! Works best with any classic Arduino ATMEGA328 BoardSo spice up your Arduino UNO project with a beautiful large touchscreen display shield with a built-in microSD card connection. This TFT display is big (3.5″ diagonal) bright (4 white-LED backlights) and colorful (18-bit 262,000 different shades)!The Display comes with 480×320 pixels with individual pixel control. It has way more resolution than a black and white 128×64 display. As a bonus, this display has a resistive touchscreen attached to it already, so you can detect finger presses anywhere on the screen.
Features:3.5″ diagonal LCD TFT display, with bright 4 white-LED backlights, default state: onIt can control the backlight to connect the transistor to a digital pin480×320 Pixels, with colorful and 18-bit, 262,000 different kinds of shade4-wire resistive touchscreen8-bit digital interface, plus 4 control lines

TFT LCDs are the most popular color displays – the displays in smartphones, tablets, and laptops are actually the TFT LCDs only. There are TFT LCD shields available for Arduino in a variety of sizes like 1.44″, 1.8″, 2.0″, 2.4″, and 2.8″. Arduino is quite a humble machine whenever it comes to process or control graphics. After all, it is a microcontroller platform, and graphical applications usually require much greater processing resources. Still, Arduino is capable enough to control small display units. TFT LCDs are colorful display screens that can host beautiful user interfaces.
Most of the smaller TFT LCD shields can be controlled using the Adafruit TFT LCD library. There is also a larger TFT LCD shield of 3.5 inches, with an ILI9486 8-bit driver.
The Adafruit library does not support the ILI9486 driver. Actually, the Adafruit library is written to control only TFT displays smaller than 3.5 inches. To control the 3.5 inch TFT LCD touch screen, we need another library. This is MCUFRIEND_kbv. The MCUFRIEND_kbv library is, in fact, even easier to use in comparison to the Adafruit TFT LCD library. This library only requires instantiating a TFT object and even does not require specifying pin connections.
TFT LCDs for ArduinoUser interfaces are an essential part of any embedded application. The user interface enables any interaction with the end-user and makes possible the ultimate use of the device. The user interfaces are hosted using a number of devices like seven-segments, character LCDs, graphical LCDs, and full-color TFT LCDs. Out of all these devices, only full-color TFT displays are capable of hosting sophisticated interfaces. A sophisticated user interface may have many data fields to display or may need to host menus and sub-menus or host interactive graphics. A TFT LCD is an active matrix LCD capable of hosting high-quality images.
Arduino operates at low frequency. That is why it is not possible to render high-definition images or videos with Arduino. However, Arduino can control a small TFT display screen rendering graphically enriched data and commands. By interfacing a TFT LCD touch screen with Arduino, it is possible to render interactive graphics, menus, charts, graphs, and user panels.
Some of the popular full-color TFT LCDs available for Arduino include 3.5″ 480×320 display, 2.8″ 400×200 display, 2.4″ 320×240 display and 1.8″ 220×176 display. A TFT screen of appropriate size and resolution can be selected as per a given application.
If the user interface has only graphical data and commands, Atmega328 Arduino boards can control the display. If the user interface is a large program hosting several menus and/or submenus, Arduino Mega2560 should be preferred to control the TFT display. If the user interface needs to host high-resolution images and motions, ARM core Arduino boards like the DUE should be used to control the TFT display.
MCUFRIEND_kbv libraryAdafruit TFT LCD library supports only small TFT displays. For large TFT display shields like 3.5-inch, 3.6-inch, 3.95-inch, including 2.4-inch and 2.8-inch TFT LCDs, MCUFRIEND_kbv library is useful. This library has been designed to control 28-pin TFT LCD shields for Arduino UNO. It also works with Arduino Mega2560. Apart from UNO and Mega2560, the library also supports LEONARDO, DUE, ZERO, and M0-PRO. It also runs on NUCLEO-F103 and TEENSY3.2 with Sparkfun Adapter. The Mcufriend-style shields tend to have a resistive TouchScreen on A1, 7, A2, 6 but are not always in the same direction rotation. The MCUFRIEND_kbv library can be included in an Arduino sketch from the library manager.
The 3.5-inch TFT LCD shield needs to be plugged atop the Arduino board. The Mcufriend-style shields are designed to fit into all the above-mentioned Arduino boards. The shields have a TFT touch screen that can display colorful images and interfaces and a micro SD card reader to save images and other data. A 3.5-inch TFT LCD touch screen has the following pin diagram.
How project worksThe code fills a rectangle, then draws a rectangle within which text “EEWORLDONLINE” is displayed. Then, lines, circles, rectangles, and squares are drawn on the screen. The project ends with a greeting and a message.