ILI9341 TFT 2.8-inch with an Arduino Uno

A 2.8-inch color TFT display driven by the ILI9341 controller over 4-wire SPI, with 320x240 resolution, an SD card slot, and an optional resistive touch panel.

ILI9341 TFT 2.8-inch, A 2.8-inch color TFT display driven by the ILI9341 controller over 4-wire SPI, with 320x240 resolution, an SD card slot, and an optional resistive touch panel.
In short

The MSP2807's logic pins are 3.3 V, so on an Arduino Uno the five lines the Uno drives (MOSI, SCK, CS, DC, RESET) go through a level shifter, while VCC takes 5V and the backlight LED pin takes the Uno's 3.3V. The display uses the Uno's hardware SPI on D11, D12 and D13 with CS on D10.

Wiring the ILI9341 TFT 2.8-inch to the Arduino Uno

Pin by pin.

ILI9341 TFT 2.8-inchArduino Uno
VCC5V
GNDGND
LED3V3
CSD10
DCD2
RESETD3
MOSID11
SCKD13
MISOD12
  • Its logic pins take 3.3 V: put a level shifter between this board's 5 V pins and the display.

What to know on the Arduino Uno

  • The controller's inputs are rated to VDDI + 0.3 V with VDDI at 3.3 V at most, so the Uno's 5 V outputs need a level shifter. MISO, coming back from the display at 3.3 V, reads as a high on the Uno without one.Ilitek ILI9341 datasheet V1.11, pp. 8, 235; Microchip ATmega328P datasheet DS40002061B, DC characteristics
  • One 240 × 320 frame in 16-bit colour is 153,600 bytes, 75 times the Uno's 2 KB of SRAM, so Adafruit_ILI9341 writes pixels straight to the display and the Uno never holds the image. Sprites and double buffering are out of reach on this board.LCDWiki MSP2807 user manual, p. 1; Arduino UNO R3 tech specs
  • The ILI9341 accepts writes up to 10 MHz, but the Uno's SPI tops out at 8 MHz (half its 16 MHz clock), so each fillScreen() moves 153,600 bytes in at least about 0.15 s. The red and blue fills in the example are visibly slow for that reason.Ilitek ILI9341 datasheet V1.11, p. 242; Microchip ATmega328P datasheet DS40002061B, SPI section
  • The board's SD slot shares the same SPI bus with its own chip select. The Arduino SD library needs a 512-byte block buffer, a quarter of the Uno's SRAM, so a sketch that draws and logs to SD at once must keep its other buffers small.Arduino SD library reference; Arduino UNO R3 tech specs
  • The backlight LED pin draws from the Uno's 3.3V pin, which is rated 50 mA in total; keep other 3.3 V parts off that pin or the backlight may dim.Arduino UNO R3 tech specs

ILI9341 TFT 2.8-inch code for the Arduino Uno

Compiled for arduino:avr:uno on 2026-10-30.

Libraries: adafruit/Adafruit ILI9341, adafruit/Adafruit GFX Library
// ILI9341 TFT 2.8-inch on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/ili9341-tft-2-8/arduino-uno
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>

#define TFT_CS 10   // disp_1:CS  -> SS
#define TFT_DC 2    // disp_1:DC  -> D2
#define TFT_RST 3   // disp_1:RESET -> D3

// Hardware SPI: MOSI/SCK/MISO are the fixed SPI pins (D11/D13/D12 on the Uno).
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.begin();
  tft.fillScreen(ILI9341_RED);
  delay(500);
  tft.fillScreen(ILI9341_BLUE);

  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(3);
  tft.setCursor(20, 20);
  tft.println("Hello TFT");

  tft.fillRect(30, 120, 180, 60, ILI9341_GREEN);
}

void loop() {}

ILI9341 TFT 2.8-inch on the Arduino Uno: questions

Can I connect an ILI9341 2.8-inch TFT directly to an Arduino Uno?

Not without level shifting: its logic pins are 3.3 V (LCDWiki MSP2807 manual, p. 1) and the Uno drives 5 V. Put a level shifter on MOSI, SCK, CS, DC and RESET; VCC can take 5V.

Why is the ILI9341 so slow to refresh on the Uno?

The Uno's SPI runs at 8 MHz at most and a full screen is 153,600 bytes, so a full fill takes at least about 0.15 s. Redraw only the regions that change.

Can the Arduino Uno use the ILI9341's SD card slot at the same time?

Yes, with its own chip select pin on the shared SPI bus, but the SD library's 512-byte buffer uses a quarter of the Uno's 2 KB of SRAM.

Keep going

For AI assistants

This guide as plain Markdown. /components/ili9341-tft-2-8/arduino-uno.md

What will you build with it?