TFT LCD Display ILI9486/ILI9488 480x320 showing white screen with Arduino Due

Hello Everyone,

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 tried with UTFT library and also with TFT_HX8357_Due-master library. But the result still remains the same.

Here is the link for the LCD screen with full product details:

Below is my test program with UTFT library, as you can see, I even tried several different port numbers, without any success.

Truly appreciate any suggestions and help to resolve this issue.

//==============================================================
#define pin_output 5
#define pin_input_magnification 4
#define pin_input_sleep 3

unsigned long start_time;
unsigned long stop_time;
unsigned int values[600]; // Array mit den eingelesenen Spannungswerten

int i, j;
int Trigger_time; // Dauer des Triggerpulses
int gray_value;

#define CENTRE 240

#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

UTFT myGLCD (ILI9486,38,39,40,41);
//UTFT myGLCD (ILI9486,19,18,17,16);
//UTFT myGLCD (ILI9486,19,20,21,22);
//UTFT myGLCD (CTE40,19,18,17,16);
//UTFT myGLCD (CTE40,19,20,21,22);

// =========================
// ========= SETUP =========
// =========================
void setup()
{
//Serial.begin(115200);
Serial.begin(9600);

REG_ADC_MR = 0x10380080; // change from 10380200 to 10380080, 1 is the PREESCALER and 8 means FREERUN
ADC -> ADC_CHER = 0x03; // enable ADC on pin A7

pinMode(pin_output, OUTPUT);
pinMode(pin_input_magnification, INPUT); // Switch-input for magnification
pinMode(pin_input_sleep, INPUT); // Switch-input for sleep-mode

digitalWrite(pin_output, LOW);

Trigger_time = 1; // Dauer des Triggerpulses

// Setup the LCD
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
myGLCD.clrScr();

myGLCD.setColor(255, 255, 0);
myGLCD.fillRect(0, 0, 432, 13);
myGLCD.setColor(0, 0, 0);
myGLCD.setBackColor(255, 255, 0);
myGLCD.print("Setup960001 - Arduino Due - LCD", CENTER, 1);
Serial.println("Setup960001 - Arduino Due - Serial");
}

// ========================
// ========= LOOP =========
// ========================
void loop()
{
//delayMicroseconds(100);
//delay(5);

delay(1000);
Serial.println("Hello World960002 - Arduino Due - Serial");
myGLCD.print("Hello World960002 - Arduino Due - LCD", CENTER, 1);

for (i = 0; i < 10; i++)
{
Serial.print(i);
Serial.print(",");
}
Serial.println(i);

delay(1000);
Serial.println("Loop960003 - Arduino Due - Serial");
myGLCD.print("Loop960003 - Arduino Due - LCD", CENTER, 1);

for (i = 20; i < 30; i++)
{
Serial.print(i);
Serial.print(",");
}
Serial.println(i);

}
//==============================================================

Your screen would have arrived in a sealed anti-static bag. ILI9486, ILI9481 or HX8357 would have been printed on the label.

Please run the UTFT examples before trying your own sketch.
Likewise, run the TFT_HX8357_due examples first.

Report back.

Hello David,

Thank you so much for your response.

I checked the anti-static bag in which the screen was packaged, it has ILI9486 printed on that bag.
Per your suggestion, I ran one example each from UTFT and TFT_HX8357_due libraries.
Both the examples compiled and uploaded successfully, but still the screen does not show anything.

I ran the following examples:

  • UTFT\examples\Arduino (AVR)\UTFT_Demo_480x320
  • TFT_HX8357_Due-master\examples\TFT_Clock

The screen remains turned on with blank white display. I have attached the screenshots of screen showing blank display and screen label for reference.
Please let me know what else to try. Truly appreciate your help.

Thank you.

Thanks for the feedback.
Yes, you have an ILI9486.
Yes, you are running a suitable example e.g. UTFT\examples\Arduino (AVR)\UTFT_Demo_480x320

Remember to edit the constructor:

UTFT myGLCD (ILI9486,38,39,40,41);

Looking at TFT_HX8357_Due/User_Setup.h at master · Bodmer/TFT_HX8357_Due · GitHub on GitHub, it does not seem to support ILI9486
But Bodmer's TFT_HX8357 library does support ILI9486 for the MEGA2560

If you can borrow a MEGA2560, I suggest that you try both UTFT and TFT_HX8357 with your Shield.

If UTFT fails on both Due and MEGA2560, your Shield is faulty. Ask for a refund.
If UTFT fails on Due but works on MEGA2560, your Due is faulty.

David.

Hello David,

Once again, thank you for your prompt response.
I tried both of your suggestions and here is the outcome:

  1. First, I changed the constructor to specify the correct TFT module (as shown below) and ran the same UTFT example

//UTFT myGLCD(CTE32HR,38,39,40,41);
UTFT myGLCD (ILI9486,38,39,40,41);

The program compiled and uploaded successfully with Arduino Due but the screen remained blank with white display.

  1. Then, I connected Arduino Mega 2560 that I borrowed with the TFT display. Having a different issue with Mega 2560, kind of starting trouble :-). In Arduino IDE, I selected "Arduino Mega" board. but the Port menu is not getting enabled, even (see the attached screenshot).

This is preventing me from running the program on Arduino Mega. Upload gives the error saying port is not selected. But I cannot select the port since the Port menu is disabled.

I looked further in Windows Device Manager, looks like the Mega 2560 is not getting detected properly by Windows (please see the attached screenshot showing Windows Device Manager). I suspect some kind of Windows driver issue. Not sure, how to resolve this issue.

Once again, I truly appreciate your help.

Thank you.

Mega2560-device-not-recognized.JPG

Mega2560-device-not-recognized.JPG

Just unplug and re-plug in the USB cable to the MEGA2560.
Try another USB cable.
Try another USB socket on the PC.

If you don't see a COM Port then the MEGA2560 is damaged. Whinge to the friend that you borrowed it from.

David.

  1. My TFT 480x320 16bit parallel refused to work with the Mega2560. It would not allow the Mega to get uploaded, and the compiler/loader complains about a stk500 timeout on the port. So I had to remove the shield, upload the firmware, and re-install the shield while hot, and the display then worked. The port was accessible, but the port did not connect. After contacting the board maker who I actually had bought the board from (BuyDisplay.com), it turns out that I had to reset some jumpers on the factory produced shield to make it work on an Arduino! solder short jumper "10" and solder open jumper "main". Of course your board is not going to have these jumpers, but maybe something similar. It appears that the jumper "10" refers to D0 and D1 (Tx and Rx), which was being overloaded by the shield and destroying the serial comm.

So you may want to bend the pins for D0 and D1, and make sure the display shield cannot access these pins.

  1. My display arrived labeled ili9341, but it turned out to be an ili9488. The UTFT pinout (ILI9488_16 , 7, 38, 9, 10) worked.

  2. Have you gotten the device and pinout UTFT myGLCD (ILI9486,38,39,40,41) right? The board is a 16bit parallel. Try using the device (ILI9488_16 , 38, 39, 40, 41).

If you have the schematics for the board, you can discover the pinout by tracing the LCD pins (RS, WR, CS, RST) backward to the Arduino pins and make sure they are (38, 39, 40, 41).

For some strange reason, my own traceforward gives the following pins (WR, DC, CS, RST). Probably my schematics is not the right one?
Hope this helps.

It appears from the Setup() code that

myGLCD.setColor(255, 255, 0);
myGLCD.fillRect(0, 0, 432, 13);

does not work. You can verify by inserting a delay after that.

So the issue is not so much the text printing, but the display that refuses to work.

  1. My TFT 480x320 16bit parallel refused to work with the Mega2560.

Please post a link to the item that you bought.
This thread is about Arduino Due.

  1. My display arrived labeled ili9341, but it turned out to be an ili9488. The UTFT pinout (ILI9488_16 , 7, 38, 9, 10) worked

What is printed on the pcb?

  1. Have you gotten the device and pinout UTFT myGLCD (ILI9486,38,39,40,41) right? The board is a 16bit parallel. Try using the device (ILI9488_16 , 38, 39, 40, 41).

Official UTFT v2.83 does not support ILI9488_16. Please post a link to the library that you are using.

If you have the schematics for the board, you can discover the pinout by tracing the LCD pins (CS, DC, WR, RESET) backward to the Arduino pins and make sure they are (38, 39, 40, 41).

BuyDisplay provide schematics, user documentation, example code, ...
You can quote each document by name or preferably by pasting a link.

Yes, of course shops can make mistakes. e.g. ship the wrong item or not configure to your spec.
In which case BuyDisplay would want clear and accurate information about their problem.

I am sure that BuyDisplay would help to resolve things.
However, if you want us to help, please provide the accurate information to us.

Please note that all the BuyDisplay products have part numbers, documents, ...
This is very different to the average Lingerie Shop that sells Electronics on Ebay.

David.

david_prentice:
Please post a link to the item that you bought.

david_prentice:
This thread is about Arduino Due.
What is printed on the pcb?

He said he had no luck with the Mega, so I was responding to that.
The PCB is a TFTM035-6 by BuyDisplay (EastRising). The controller chip is hidden behind the display and I can't see the marking.

david_prentice:
Official UTFT v2.83 does not support ILI9488_16. Please post a link to the library that you are using.

Well, the UTFT on RinkyDink supports ILI9488_16. From UTFT.h
#define ILI9341_8 32
#define ILI9341_16 33
#define ILI9488_16 34

BuyDisplay provide schematics, user documentation, example code, ...
You can quote each document by name or preferably by pasting a link.

You can see all the documents related to this display at

But the docs are often outdated and inaccurate or irrelevant, and refer to the wrong controller. And don't cover essential stuff like what are the jumpers for on the shield -- like the "10" jumper and "main" jumper that they responded I have to resolder. It took them a few days and some begging on my part to get them to respond.

In which case BuyDisplay would want clear and accurate information about their problem.

I am sure that BuyDisplay would help to resolve things.
However, if you want us to help, please provide the accurate information to us.

Yes, I provided very clear and accurate info to them, and also in my stk500 subforum thread re this issue.

Thanks for your Ebay link. This identified the display board and the Adapter shield.

I could then go to BuyDisplay site for more information i.e. here

This page shows pcb photos of the Adapter Shield ER-AS-ILI9341
And the pcb photos for 3.5 inch display TFTM035-6

The page has links for datasheets, schematics, user manuals, examples, ...

Please explain what your problems are / were.
When I ask for information printed on the Shield. It clearly says ER-AS-ILI9341 v2.1
When I ask for information printed on the Display. It clearly says ER-TFTM035-6 v1.0

Did they mail the wrong items?
Were jumpers incorrectly set?

Do the items you received match the photos?
Do the jumper links match the photos?

Most controller chips are bare dies that are bonded to the TFT panel. You can not see them.
You can only read the controller ID via software.

If you have questions, you can quote page and document name.
A reader can access the page from the BuyDisplay links.

I do not want to guess. Especially when you can quote the exact example filename and path from the ZIP or PDF page

David.

This topic was automatically closed after 120 days. New replies are no longer allowed.