Why is my Waveshare TFT so slow?

Hi everyone, and thanks to all the expert posters that continue to contribute to this forum.

Of course I'm now struggling!

I bought a Waveshare 4 inch TFT Touch Shield 320 x 480 px display with XPT2046 Touch Controller.

A typical 'that looks cheap to get me going Amazon' purchase.

I've plugged it in to a clone MEGA2560 R3 (Elegoo) board and all the demo code from Waveshare works and did exactly what it said it would do - but it is SO (*******) slow to update on the screen.

(I even tried writing some code where I defined six small areas of the screen for a clock HH:MM:SS and watching the paint to background colour followed by the painting of the correct number made me weep.)

I have to be missing a trick here... I really must. (A display like this cannot be so sh1t).

Is it a frame buffer thing?

I recall dealing with frame buffers back in the 80s with an Electron and the BBC microcomputer.

I can't believe how slow this display is, and if any one has an idea of a better one to work with, or how to make this one work then please please please let me know.


The Waveshare display uses a 16-bit parallel module which it drives via shift register.

Bodmer supports this abortion for ESP32 and ESP8266.

I am not aware of any “sensible” libraries that support it for Uno / Mega. But it would be very straightforward.

Waveshare libraries “work” but are not very efficient.

All the same, your project performance depends on using your intelligence. Only draw something that has changed. And then draw the minimum areas.


Thanks David, I appreciate the reply.

It looks like I'm going to have to consign it to the bin - I had hoped to be able to paint a key pad for numerical data entry but even painting the screen black to erase it is woefully slow.

Would you advise me on what make and model to look at next?

4 inches is about the minimum size I need and can go bigger, has to be touch sensitive and has to be quick and responsive, and some degree of mounting hardware bezels etc would be nice.

Cost wise sub $50 would be nice but sub $100 would be acceptable for the right product.

Many thanks.

(Are Nextion displays as good as they appear to be?)

I know this is an old thread, but I have written a library for this screen. It provides an 'Adafruit_GFX' style graphics interface, and touchscreen support that's reasonably easy to use. You can find it here:

I've run it on an Uno, a Mega, and a Wemos D1 R1 (but that required re-wiring). It is substantially faster than the one the Waveshare website points people to, and has more functionality.