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.
- 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.
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.
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
masterfor 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
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.