Blogs
2.4 inch LCD Display TFT Touch Screen Shield 240×320 18-bit SPFD5408 Display Controller Arduino UNO R3/Mega2560
2.4″ TFT LCD Touch Screen Shield
240×320 Resolution, 18-bit Color, SPFD5408 Controller – Compatible with Arduino UNO R3/Mega2560
Introduction
The 2.4-inch TFT LCD Shield features a 240×320 resolution resistive touch screen with 18-bit color (262K colors) and uses the SPFD5408 display controller. It plugs directly into Arduino UNO/Mega boards, providing a simple way to add graphical interfaces to projects.

Key Features
High Resolution
240×320 pixel resolution
Rich Colors
18-bit color (262,144 colors)
Touch Input
Resistive touch screen
Plug-and-Play
Direct UNO/Mega compatibility
Technical Specifications
Display Type | TFT LCD with Resistive Touch |
---|---|
Resolution | 240×320 pixels |
Controller | SPFD5408 (ILI9341 compatible) |
Color Depth | 18-bit (262K colors) |
Viewing Angle | 140° |
Interface | 8-bit parallel + SPI (touch) |
Operating Voltage | 3.3V-5V |
Dimensions | 55×75mm (UNO shield size) |
Pin Configuration

Arduino Pin | TFT Function | Touch Function |
---|---|---|
D2 | LCD D7 | – |
D3 | LCD D6 | – |
D4 | LCD D5 | – |
D5 | LCD D4 | – |
D6 | LCD D3 | – |
D7 | LCD D2 | – |
D8 | LCD D1 | – |
D9 | LCD D0 | – |
D10 | LCD CS | – |
D11 | LCD MOSI | T_CLK |
D12 | LCD MISO | T_OUT |
D13 | LCD SCK | T_CS |
A0 | LCD RS/DC | – |
A1 | LCD WR | – |
A2 | LCD RD | – |
A3 | LCD RESET | – |
Note: Some shields may have slightly different pin mappings – check your specific model
Library Installation
- Open Arduino IDE
- Go to Sketch > Include Library > Manage Libraries
- Search for “Adafruit ILI9341” and install
- Search for “Adafruit GFX” and install
- For touch: search “Adafruit TouchScreen“
Basic Display Test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <Adafruit_GFX.h> #include <Adafruit_ILI9341.h> #define TFT_CS 10 #define TFT_DC A0 #define TFT_RST A3 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); void setup() { tft.begin(); tft.fillScreen(ILI9341_BLACK); tft.setRotation(3); // Adjust for your orientation tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2); tft.println("Hello World!"); tft.drawRect(50, 50, 100, 50, ILI9341_RED); tft.fillCircle(150, 120, 30, ILI9341_BLUE); } void loop() {} |
Touch Screen Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <TouchScreen.h> #define YP A2 // Must be an analog pin #define XM A1 // Must be an analog pin #define YM 8 // Can be a digital pin #define XP 9 // Can be a digital pin TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); void setup() { Serial.begin(9600); } void loop() { TSPoint p = ts.getPoint(); if (p.z > ts.pressureThreshhold) { Serial.print("X = "); Serial.print(p.x); Serial.print("\tY = "); Serial.print(p.y); Serial.print("\tPressure = "); Serial.println(p.z); } delay(100); } |
Display Optimization Tips
Reduce Memory Usage
1 2 |
tft.setAddrWindow(x, y, w, h); tft.pushColor(color, count); |
Use partial screen updates instead of full redraws
Faster Drawing
1 2 3 |
tft.startWrite(); // Multiple draw operations tft.endWrite(); |
Batch draw commands between start/endWrite
Custom Fonts
1 2 |
#include <Fonts/FreeSansBold12pt7b.h> tft.setFont(&FreeSansBold12pt7b); |
Use built-in fonts or create your own
Troubleshooting
Blank/White Screen
- Verify all pins are properly connected
- Check TFT_RST pin is properly initialized
- Try different rotation values (0-3)
Touch Not Working
- Confirm touch library is installed
- Check pin mappings match your shield
- Calibrate touch coordinates
Slow Performance
- Use optimized drawing methods
- Reduce color depth if possible
- Consider using Mega2560 for more RAM