ILI9486 LCD with SPI interface [Solved] Big thanks to Cal from ImpulseAdventure!


I am trying to use a GUI builder like the one supported by GUIslice but I am having problems

I managed to get my hands on a Waveshare LCD that does not seem to be supported by any of the Arduino libraries.


They have provided a driver example that does work and I can perform the tests.

(File:4inch TFT Touch Shield Code.7z - Waveshare Wiki)

I have been trying everything I can think of to make this work on the two libraries that actually claim t support this driver. (MCUFRIEND_kbv, and Ucglib) Mostly I have configured the pins to match the board and have tried to combine the examples from Waveshare with them but all I get is a blank screen.

I am at the point where I realized that I could have probably built my own simple graphing GUI by now however that doesn't teach me more about the magic behind these drivers.

Can anyone figure out what's missing in the supported drivers?


MCUFRIEND is the one that is supported by GUIslice, the Ucglib is just the only other one.

Also, I would post the codes if you would like however there are many pages.

1 Like

Look at the schematic. It has the same sort of Shift Register Abortion as their RPi screens.

Bodmer supports it for Expressif ESP32 and ESP8266

I don’t know of anyone supporting this Abortion for Uno / Mega.
It is simple enough to drive it but I have no intention of doing so.


Ya, I have seen several examples that are close but won't work. There is even a forum that talks about using this driver but the solutions are old.

Is there an easy way to merge the GUI builders code into the given driver? I have tried but all I get is a blank screen.

I placed a request for driver support with the GitHub GUIslice page

Requst: Support ILI9486 with SPI interface

Hi sj_baird -- I'd be happy to integrate support for your display into GUIslice assuming we are able to locate a decent/maintained library that is compatible with Waveshare's 8080-to-SPI interface adaptation; ideally one that shims to Adafruit-GFX style APIs :slight_smile:

I presume you are using a UNO or MEGA to drive the display?

With regards to "merging" Waveshare's own sample driver into the GUI, on quick glance it looks feasible to do (I could guide you if interested). That said, I would be reluctant to adapt their Waveshare driver into the mainline code as it isn't really packaged as a library, the API doesn't follow common convention, nor does it provide much applicability outside of this specific display — hence the interest in identifying a suitable alternate library.

For those interested in how the Waveshare 4" display translates SPI to the ILI9486 parallel interface using shift registers:


Hope that helps!


In case it may be useful for others, I have created a simple Arduino-compatible wrapper library for the Waveshare ILI9486 SPI shield (shift register / RPI) design.

GitHub: Waveshare_ILI9486

Related TFT shields:

This library wraps the official Waveshare driver code and also provides a minimal GFX-compatible API. The intention was simply to enable easier integration of the Waveshare driver code and not optimization (naturally, performance will be a function of the shield's interface implementation).

There exist ESP-optimized versions of the driver, but I wasn't able to locate an Arduino-compatible version, therefore created this one. Note that testing is not yet complete, and certain APIs will be added later (eg. bitmaps, etc.).

I would personally like to thank Cal, from ImpulseAdventure for getting this working!

He started working within hours of my request for support and worked late at night to integrate this display with his system.

Any delay was due to my slowness in testing the changes he made since he didn’t have the screen on hand.

You should be able to find the library on Github Waveshare_ILI9486 library! he has it working with the PaulStoffregen/XPT2046_Touchscreen library.

He integrated the Waveshare driver and has noticed some minor arias that need more attention with future updates.

Hi Cal,

Do you library also works with this Waveshare display ?

Good question... I don't currently have an ILI9486 board in the RPI form factor and haven't seen a schematic for that particular Waveshare display to confirm for you. However, my expectation would be that the library driver might be close to what is needed to drive the display. If you happen to be using an ESP-based MCU, then I would strongly recommend using Bodmer's TFT_eSPI library instead as I understand it directly supports your particular display type.