TFT / Color
Interfacing ILI9341 2.8" TFT TFT / Color with Arduino Uno
What is the ILI9341 2.8" TFT?
The ILI9341 2.8-inch TFT display is a versatile color screen that brings vibrant visuals and touch interactivity to your projects. With a 320×240 resolution and support for 65K colors, it delivers crisp, bright images suitable for GUIs, dashboards, and multimedia applications.
The display is built around the ILI9341 driver chip, which includes a built-in video RAM buffer and supports SPI communication. A resistive touchscreen, controlled by an XPT2046 controller, enables intuitive user interaction. Many modules also feature a microSD card slot for storing images and assets.
Available in both SPI and 8-bit parallel interface variants, the SPI version is the most common and requires only a few I/O pins to operate. The module operates at 3.3V–5V, making it compatible with a wide range of microcontrollers. Onboard level-shifting circuitry ensures safe operation with both 3.3V and 5V logic.
Note: This entry covers the SPI version of the display, which is the most widely available and easiest to interface with. Parallel versions exist but are less common and require more I/O pins.
Specifications
| Resolution | 320 × 240 pixels (QVGA) |
| Color depth | 65K colors (RGB 16-bit 565) |
| Display type | TFT, transmissive |
| Touchscreen | Resistive (XPT2046 controller) |
| Interface | SPI (4-wire) or 8-bit parallel |
| Operating voltage | 3.3V – 5V (with onboard level shifter) |
| Logic voltage | 3.3V |
| Backlight | 4 white LEDs |
| Active area | 43.2 × 57.6 mm |
| Module dimensions | ~50 × 86 mm |
| Operating temperature | -20°C to 60°C |
| Storage temperature | -30°C to 70°C |
| Extra features | microSD card slot |
ILI9341 2.8" TFT Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power — 3.3V to 5V (onboard regulator/level shifter) |
| 2 | GND | Ground |
| 3 | CS | SPI chip select (active low) |
| 4 | RESET | Reset, active low |
| 5 | DC/RS | Data/Command select — high for data, low for command |
| 6 | SDI/MOSI | SPI data in (Master Out Slave In) |
| 7 | SCK | SPI clock |
| 8 | LED | Backlight control — high to enable, or connect to 3.3V |
| 9 | SDO/MISO | SPI data out (optional, for reading) |
| 10 | T_CS | Touch SPI chip select (XPT2046) |
| 11 | T_CLK | Touch SPI clock |
| 12 | T_DIN | Touch SPI data in |
| 13 | T_DO | Touch SPI data out |
| 14 | T_IRQ | Touch interrupt — goes low when touch detected |
Critical usage notes:
- SPI vs Parallel: Most modules are SPI versions. Verify your module's interface before wiring — SPI uses fewer pins and is recommended for most projects.
- Level shifting: While many modules include onboard level shifters and accept 5V power, the logic pins are 3.3V. On 5V boards like the Uno, the onboard level shifter handles this — but check your specific module.
- Backlight: The LED pin controls the backlight. Connect to a PWM-capable pin for brightness control, or tie to VCC for always-on.
- Touch controller: The resistive touch uses an XPT2046 controller over SPI. Touch pins share the same SPI bus as the display but use a separate CS pin.
- Library support: The Adafruit_ILI9341 and TFT_eSPI libraries are the most widely used and well-documented options.
- SD card: If your module has an SD slot, it uses a separate SPI CS pin — typically Pin 4 on Arduino — and shares MOSI/MISO/SCK with the display.
Setting Up ILI9341 2.8" TFT with Arduino Uno
Library
Adafruit_ILI9341 by Adafruit
Arduino IDE → Library Manager → search "Adafruit ILI9341" → Install (also install "Adafruit BusIO" and "Adafruit GFX Library")
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V | Onboard level shifter handles 5V→3.3V |
| GND | GND | — |
| CS | D10 | — |
| RESET | D8 | — |
| DC/RS | D9 | — |
| SDI/MOSI | D11 | — |
| SCK | D13 | — |
| LED | 3.3V | Or PWM pin for brightness control |
| SDO/MISO | D12 | Optional |
| T_CS | D4 | Touch chip select |
| T_IRQ | D3 | Optional interrupt |
Example code
- Install the Adafruit ILI9341 library along with Adafruit GFX Library and Adafruit BusIO.
setRotation(0)= portrait,setRotation(1)= landscape,setRotation(2)= inverted portrait,setRotation(3)= inverted landscape.- For touch support, add the XPT2046_Touchscreen library.
- The onboard level shifter allows 5V power from the Uno — safe for 3.3V logic.
Related Guides & Projects

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.