Arduino Mega TFT library
C++ C# Other
Failed to load latest commit information.
doc updated docs for ILI9325/HX8347A Jun 20, 2013
examples various demo fixes. increase logo size to suit display Oct 28, 2013
lib Incorrect file paths. Jul 18, 2014
utility forgot arduino ide will not support cpp files in subdirs. damn. Oct 28, 2013
.gitignore adding compiled binaries for utilities Sep 19, 2013 apache license migration Jul 17, 2013 update README with link back to article Nov 9, 2013 updates to include readme, license in dist Jul 16, 2013

A C++ graphics library for the Arduino

xmemtft is a modular, optimised, object oriented graphics library for driving TFT panels on the Arduino. It is primarily targeted at the Arduino Mega but most of its functionality is available on the standard Arduino.

Features include:

  • Graphics primitives: lines, ellipse, rectangles, gradients etc.
  • TrueType proportionally-spaced fonts.
  • Compressed PNG-style graphics.
  • JPEG decompression and display.
  • External memory (XMEM) and highly optimised GPIO interfaces.

The main documentation for this library can be found at my website in a number of articles supported by demo code and videos on YouTube:

Nokia QVGA TFT LCD Graphics Library
Interfacing the Nokia 6300 QVGA to the standard Arduino
Nokia N82 2.4" QVGA TFT on the Arduino
Reverse engineering the Nokia N95 8Gb QVGA LCD
Reverse engineering the Nokia N93 QVGA LCD
Reverse engineering the Nokia E73 QVGA LCD
A generic 16-bit LCD adaptor for the Arduino
Reverse engineering the LG KF700 480x240 widescreen LCD
Reverse engineering the Sony Ericsson Vivaz high resolution 640x360 cellphone LCD


Visit my downloads page to download a package that you can just unzip into your Arduino IDE's libraries subdirectory. The next time you restart the Arduino IDE you will see that all the examples are available via the IDE menu.

Supported panels

The following are supported using the external memory (XMEM) access mode:

  • Nokia 6300
  • Nokia N82
  • Nokia N95 8Gb
  • Nokia N93
  • Nokia E73
  • LG KF700
  • Sony Ericsson Vivaz U5

The following are supported using my generic 16-bit LCD adaptor running the highly optimised GPIO driver. Additionally, the Adafruit ILI9325 shield is supported via a driver contributed by Colin Irwin.

  • ILI9325
  • ILI9327
  • ILI9481
  • HX8347A
  • HX8352A
  • R61523


Contributions to xmemtft are welcome. Please follow these steps to ensure a smooth workflow:

  • Clone the main xmemtft repo into your personal account and create a branch off master for your work. Give it a short meaningful name that allows people to get a good idea at-a-glance of what you've done.

  • Write your contribution while trying to stay within the coding style evident within the library.

  • When you're happy with your code, first do a merge back from the current master to ensure you're still compatible and then send me a pull request. I will code-review the pull-request and when we're all happy I will accept it and do the merge back into master.

From time to time I will take the current master branch, tag it with a version number and create a zip package on my website's downloads page that people can use to install the driver into the Arduino IDE.