How to use 2.4inch TFT LCD SPFD5408 with arduino MEGA 2560

Some of you may have purchased this LCD Screen or thinking of getting one. Its a great screen for displaying images and graphics. I purchased mine for displaying sensor data from my 10 sensors on my robot via xbee (telemetry). I bought it not only out of impulse as it was very cheap but also that it was the biggest screen i could find cheaply in Australia. ($15).

Enough of me rambling…

Unfortunately this LCD Screen has not much support and i have seen people unable to find libraries for it especially for the MEGA.


1.I used the SWIFT Library and the Adafruit GFX Library

SWIFT Library by smoke and wires:

Smoke and wires lcd tutorial

AdaFruit GFX Library

2.After copying the libraries over to your libraries folder, open the SWIFT folder, locate SWIFT.cpp and change this line from

// Use the include which corresponds to your arduino
//#include "mega_24_shield.h"
#include "uno_24_shield.h"

to this (just un-comment the mega part and comment the uno part.

// Use the include which corresponds to your arduino
#include "mega_24_shield.h"
//#include "uno_24_shield.h"

This will allow you to use the screen on the arduino MEGA. In terms of the connections from the screen to the mega, just plug it in like a shield the same way as you do when connecting it to the UNO.

Here is a simple code sample i wrote just to display text in landscape mode. (its not the best code)

// Code provided by Smoke And Wires
// This code has been taken from the Adafruit TFT Library and modified
//  by us for use with our TFT Shields / Modules
// For original code / licensing please refer to

#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
// #define LCD_CS A3 // Chip Select goes to Analog 3
// #define LCD_CD A2 // Command/Data goes to Analog 2
// #define LCD_WR A1 // LCD Write goes to Analog 1
// #define LCD_RD A0 // LCD Read goes to Analog 0

// #define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
//   D0 connects to digital pin 8  (Notice these are
//   D1 connects to digital pin 9   NOT in order!)
//   D2 connects to digital pin 2
//   D3 connects to digital pin 3
//   D4 connects to digital pin 4
//   D5 connects to digital pin 5
//   D6 connects to digital pin 6
//   D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).

// Assign human-readable names to some common 16-bit color values:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

SWTFT tft;
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// SWTFT tft;

void setup(void) {

  uint16_t identifier = tft.readID();

void loop(void) {
  for(uint8_t rotation=0; rotation=1; rotation++) {

unsigned long testFillScreen() {
  unsigned long start = micros();
  return micros() - start;

unsigned long testText() {
  unsigned long start = micros();
  tft.setCursor(0, 0);
  tft.setTextColor(WHITE);  tft.setTextSize(1);
  tft.println("Bobs Robotics!");

  tft.println("Motor temp ~56 degrees C");

  tft.println("ESC Temp ~50 degrees C");

  tft.println("Methane Sensor ~20ppm");

  tft.println("Hydrogen sensor~0.2ppm");

  tft.println("Co2 Sensor ~70ppm");

  tft.println("Air pressure ~100011Pa");

  tft.println("Current temp ~30 degrees C");

  tft.println("Current Humidity is 50%");

  tft.println("Altutude ~45m");

  tft.println("Voltage remaining ~ 7.6V");

  tft.println("Current draw ~12A");
  tft.println("UV Index is 12mW/cm^2");
  tft.println("light intensity is 930Lux");

  return micros() - start;

here is an image of it


I’ve only recently began using my Raspberry with an Arduino 2560 and a 2.4" TFT LCD Shield display. I’ve gone through many iterations of loading libraries (including those on this post) and I can’t get anything to display. The back-light (white) is on as soon as I plug in the display, and the compile and upload are error-free, but nothing comes up. When the upload completes, the screen flashes as though something is there, but then nothing more happens.

I’ve looked at the back of the display and there are two tiny chips with the markings “DP74HC245” on each with “5E1801” directly beneath the first line. Everything seems to be “chip specific” so I’m not sure if my display is newer than those in previous posts. I’m assuming these markings are the display controller chip.

My “C” programming skills are very limited so I’m not sure I’m comprehending everything that has been shown in the various posts, but at this time, I think I may have a pin-mapping issue. Any guidance would be greatly appreciated. Many thanks in advance.

By the way, I can read German/Italian so if you wish to respond in another language, please feel free to do so. Thanks,


Since working with this, I found another reference which I believe is the “real” controller board – it is ILI9341. This makes much more sense based on what I’ve read. I also downloaded a program from “SKU156315 2.4INCH_ARDUINO_ILI9341_V2.0.ZIP” - I haven’t installed it yet, but I’m keeping my fingers crossed.

I have the same problem,just show a white I have the same problem,just show a white screen, I try everything and did not work, someone can help me, the driver of my tft 2.4" is 9341. Thank you.

Good night…
I have a question for your library SPDF5408 Adafruit TFT LCD. How do I change the 8-bit data pin of TFT LCD to pin 22-29 or other digital pin on Arduino Mega 2560, and where I need to change its coding, is it on <SPFD5408_Adafruit_TFTLCD.h> or <SPFD5408_Adafruit_GFX.h>??
In my case, digital pin from 2-13 will be used for GSM Shield ?? Please guide me. Thank you!!!

Picture, visit: