---
product_id: 47594654
title: "HiLetgo ILI9341 2.8\" SPI TFT LCD Display Touch Panel 240X320 with PCB 5V/3.3V STM32"
brand: "hiletgo"
price: "RM135"
currency: MYR
in_stock: true
reviews_count: 7
category: "Hi Letgo"
url: https://www.desertcart.com.my/products/47594654-hiletgo-ili9341-2-8-spi-tft-lcd-display-touch-panel
store_origin: MY
region: Malaysia
---

# Dual 3.3V/5V logic compatible 240x320 RGB vertical stripe resolution 2.8-inch vibrant display HiLetgo ILI9341 2.8" SPI TFT LCD Display Touch Panel 240X320 with PCB 5V/3.3V STM32

**Brand:** hiletgo
**Price:** RM135
**Availability:** ✅ In Stock

## Summary

> 🚀 Elevate your DIY projects with a pro-grade touchscreen that means business!

## Quick Answers

- **What is this?** HiLetgo ILI9341 2.8" SPI TFT LCD Display Touch Panel 240X320 with PCB 5V/3.3V STM32 by hiletgo
- **How much does it cost?** RM135 with free shipping
- **Is it available?** Yes, in stock and ready to ship
- **Where can I buy it?** [www.desertcart.com.my](https://www.desertcart.com.my/products/47594654-hiletgo-ili9341-2-8-spi-tft-lcd-display-touch-panel)

## Best For

- hiletgo enthusiasts

## Why This Product

- Trusted hiletgo brand quality
- Free international shipping included
- Worldwide delivery with tracking
- 15-day hassle-free returns

## Key Features

- • **Seamless Dual Voltage Support:** Works flawlessly with both 3.3V and 5V systems, perfect for versatile MCU projects.
- • **Crisp 2.8" Touchscreen Display:** Compact yet immersive 240x320 pixel resolution for sharp visuals and intuitive control.
- • **Integrated PCB with Power & SD:** Built-in power supply IC and SD card interface streamline your hardware setup.
- • **Premium a-Si TFT Active Matrix:** Ensures vibrant colors and wide 6 o’clock viewing angle for professional-grade clarity.
- • **Optimized for Fast MCU Integration:** Compatible with popular platforms like Arduino and Teensy for rapid prototyping.

## Overview

The HiLetgo ILI9341 2.8" SPI TFT LCD Touch Panel delivers a sharp 240x320 RGB display powered by an a-Si TFT active matrix. Designed for seamless integration with 3.3V and 5V logic systems, it includes a PCB with power supply and SD card interface, making it ideal for Arduino, Teensy, and STM32 projects. Its vibrant white LED backlight and wide viewing angle ensure professional visual quality in a compact form factor.

## Description

Product Description:100% brand new and high qualityType: touch panelSize:2.8" SPI SerialDisplay area:36.72(W)X48.96(H)mmSize:8.5 x 4.8cmDriver element: a-Si TFT active matrixPixel arrangement: RGB vertical stripeDriver IC: ILI9341Backlight: White LEDViewing Direction: 6 o'clockColor Depth: 262K/65KResolution (dots): 240RGB*320Dots5V compatible, use with 3.3V or 5V logicNeed at least 4 IOs from your MCUPackage included:1*240X320 Resolution 2.8" SPI TFT LCD Display Touch PanelNote:If you are using this LCD with a 5V device such as an Arduino, be aware that it doesn't work if WITHOUT level shifting to 3.3v logic. Please use level shifters from 5V to 3.3V, it will work then.

Review: Works with Teensy 3.2 or Arduino - here's how - I love these displays and use them on all my projects. I've bought about 8 so far and can get them to work with either Teensy 3.2 or an Arduino Nano. For operation with a Teensy 3.2 1. use the  from the PJRC--and this lib is very fast connect directly 2. for touch use "UTouch.h" 3. for SD I use  4. no level shifters needed 5. you may need to solder J1 (I do on all my displays) 4. if you want to use SD, remove the resistors R1, R2, R3 and solder 0 ohm resistors For operation with Auduino Nano 1. use the  2. for touch use "UTouch.h" 3. for SD I have yet to get an SD to work with graphics due to not enough memory 4. no level shifters needed 5. you WILL need to solder J1 (I do on all my displays) EDIT as of 12/29/2019 Usage with Arduino connect as usual but power your Arduino with 3.3 volts (just connect 3.3 to the 5V pin on the arduino). Alternatively you can put a 1K series resistor on all pins to drop the voltage going to the unit (and power with 3v3). THESE UNITS WILL NOT WORK IF POWERED WITH 5 AND IF THE SIGNAL LINES ARE 5 VOLTS. update 2/2/2022 tips on usage to get everything working on a teensy 4.0 (or 3.2) /* This simple program will test 1) the display, 2) the SD card, 3) the touch screen, 4) ability to readPixel The readPixel is only supported by some display drivers like the ILI9341_t3 driver, there is a PrintScreen.h utility that will let you save your screen to a BMP file and draw the file if readPixel fails try to adjust speeds above. It's possible the display MISO is not tri state and will basically own MISO where other devices can't use it. If so, you will need some external buffer magic If using display with Teensy (3v3) solder J1, replace R1, R2, R3 with 0 ohm pin connections Display MCU VCC 3v3 GND GND CS 10 RESET 3v3 If white screen 1) 8 or 2) use series 1K0 and 10uf to GND to slow charge DC 9 MOSI 11 SCK 13 LED 3v3 or connect to analog pin and use analogWrite(x) to fade brightness MISO 12 T_CLK 13 T_CS 0 T_DIN 11 T_DO 12 T_IRQ 1 SD_SCK 13 SD_MISO 12 SD_MOSI 11 SD_CS A3 (other digital pins may work, read data sheet for what pins support CS) */ #include "ILI9341_t3.h" // high speed display that ships with Teensy #include  // touch driver for a TFT display #include  #include  #define CS_PIN 10 #define DC_PIN 9 #define T_CS 0 #define T_IRQ 1 #define SD_CS A3 int BtnX, BtnY; // you know the drill ILI9341_t3 Display(CS_PIN, DC_PIN); XPT2046_Touchscreen Touch(T_CS, T_IRQ); TS_Point TouchPoint; SdFat sd; SdFile dataFile; void setup() { Serial.begin(9600); while (!Serial) {} Serial.println("Starting..."); // start the dispaly Display.begin(); Display.setRotation(1); // depending on your exact display getting touch + SD + display working // you may need to adjust the clock speed // default is 30 mhz but you may need to slow to 10000000 or set to as high as 100000000 //Display.setClock(20000000); // start the touch Touch.begin(); Touch.setRotation(1); // start the SD card // depending on your sd card and display, you may need to slow the sd card clock // I find 20 mhz to be pretty reliable bool SDStatus = sd.begin(SD_CS, SD_SCK_MHZ(20)); //bool SDStatus = sd.begin(SD_CS); // test SD and write something if (SDStatus) { Serial.println("SD OK"); dataFile.open("Test.txt", FILE_WRITE); dataFile.print("This is a test"); dataFile.close(); } else { Serial.println("SD failed"); } // test display Display.fillScreen(ILI9341_BLUE); Serial.print("Color of pixel (10,10): "); Serial.println(Display.readPixel(10, 10)); delay(4000); Display.fillScreen(ILI9341_BLACK); } void loop() { if (Touch.touched()) { TouchPoint = Touch.getPoint(); BtnX = TouchPoint.x; BtnY = TouchPoint.y; // consistency between displays is a mess... // this is some debug code to help show // where you pressed and the resulting map // x = map(x, real left, real right, 0, width); // y = map(y, real bottom, real top, 0, height); // tft with black headers, yellow headers will be different BtnX = map(BtnX, 3700, 300, 0, 320); BtnY = map(BtnY, 3800, 280, 0, 240); // Serial.print(", Mapped: "); // Serial.print(BtnX); // Serial.print(","); // Serial.println(BtnY); Display.fillCircle(BtnX, BtnY, 3, ILI9341_RED); // delay(5); } }
Review: ILI9341 - Hi quality and great for price. Connection is a little bit complicated but working great for projects (game console, LVGL and etc)

## Features

- Driver element: a-Si TFT active matrix
- Resolution (dots): 240RGB*320Dots
- Viewing Direction: 6 o’clock
- Pixel arrangement: RGB vertical stripe
- With PCB plate (including power supply IC, SD), compatible with 5110 interface

## Technical Specifications

| Specification | Value |
|---------------|-------|
| ASIN | B073R7BH1B |
| Batteries Included? | No |
| Batteries Required? | No |
| Best Sellers Rank | #45,376 in Industrial & Scientific ( See Top 100 in Industrial & Scientific ) #8 in LCD Touch Panels |
| Color | Red |
| Customer Reviews | 4.5 4.5 out of 5 stars (315) |
| Date First Available | July 6, 2017 |
| Is Discontinued By Manufacturer | No |
| Item Package Quantity | 1 |
| Item Weight | 1.94 ounces |
| Item model number | 3-01-1433 |
| Manufacturer | HiLetgo |
| Material | FR4 |
| Package Dimensions | 4.02 x 3.94 x 0.87 inches |
| Part Number | 3-01-1433 |
| Size | 2.8" SPI TFT LCD Display |
| Voltage | 5 Volts |

## Images

![HiLetgo ILI9341 2.8" SPI TFT LCD Display Touch Panel 240X320 with PCB 5V/3.3V STM32 - Image 1](https://m.media-amazon.com/images/I/61c2THxnREL.jpg)

## Questions & Answers

**Q: Has anyone gotten touch to work with this?  I tried the UTouch library as suggested by one of the comments and couldn't get it to work.**
A: Serach for  PaulStoffregen/XPT2046_Touchscreen on github.  That is what I use and it works great. I also use the  MiniGrafx display library.  I have several projects that use this display and touch screen.  Also, squix78/esp8266-weather-station  (on github) is a great project that uses this display (or one just like it).

**Q: does anyone know the pin connection to Arduino for the touch portion?**
A: This board is the exact same board as the Teensy Color Touch screen (https://www.pjrc.com/store/display_ili9341_touch.html). Lots of good info there.

**Q: Is this display visible outdoors? Preferably in direct sunlight.  I’ve read transflective is best but can’t find affordable model.**
A: With white text on a black background visibility is difficult. I have a setting on my applications where I can change text to dark with a white background and helps.

**Q: Has anyone displayed a picture on this screen, from the SD card?  Can that be done?**
A: Sure depending you library. Some libraries have a method for this

## Customer Reviews

### ⭐⭐⭐⭐⭐ Works with Teensy 3.2 or Arduino - here's how
*by K***K on June 9, 2018*

I love these displays and use them on all my projects. I've bought about 8 so far and can get them to work with either Teensy 3.2 or an Arduino Nano. For operation with a Teensy 3.2 1. use the <ILI9341_t3.h> from the PJRC--and this lib is very fast connect directly 2. for touch use "UTouch.h" 3. for SD I use <SdFat.h> 4. no level shifters needed 5. you may need to solder J1 (I do on all my displays) 4. if you want to use SD, remove the resistors R1, R2, R3 and solder 0 ohm resistors For operation with Auduino Nano 1. use the <Adafruit_ILI9341.h> 2. for touch use "UTouch.h" 3. for SD I have yet to get an SD to work with graphics due to not enough memory 4. no level shifters needed 5. you WILL need to solder J1 (I do on all my displays) EDIT as of 12/29/2019 Usage with Arduino connect as usual but power your Arduino with 3.3 volts (just connect 3.3 to the 5V pin on the arduino). Alternatively you can put a 1K series resistor on all pins to drop the voltage going to the unit (and power with 3v3). THESE UNITS WILL NOT WORK IF POWERED WITH 5 AND IF THE SIGNAL LINES ARE 5 VOLTS. update 2/2/2022 tips on usage to get everything working on a teensy 4.0 (or 3.2) /* This simple program will test 1) the display, 2) the SD card, 3) the touch screen, 4) ability to readPixel The readPixel is only supported by some display drivers like the ILI9341_t3 driver, there is a PrintScreen.h utility that will let you save your screen to a BMP file and draw the file if readPixel fails try to adjust speeds above. It's possible the display MISO is not tri state and will basically own MISO where other devices can't use it. If so, you will need some external buffer magic If using display with Teensy (3v3) solder J1, replace R1, R2, R3 with 0 ohm pin connections Display MCU VCC 3v3 GND GND CS 10 RESET 3v3 If white screen 1) 8 or 2) use series 1K0 and 10uf to GND to slow charge DC 9 MOSI 11 SCK 13 LED 3v3 or connect to analog pin and use analogWrite(x) to fade brightness MISO 12 T_CLK 13 T_CS 0 T_DIN 11 T_DO 12 T_IRQ 1 SD_SCK 13 SD_MISO 12 SD_MOSI 11 SD_CS A3 (other digital pins may work, read data sheet for what pins support CS) */ #include "ILI9341_t3.h" // high speed display that ships with Teensy #include <XPT2046_Touchscreen.h> // touch driver for a TFT display #include <SdFat.h> #include <SPI.h> #define CS_PIN 10 #define DC_PIN 9 #define T_CS 0 #define T_IRQ 1 #define SD_CS A3 int BtnX, BtnY; // you know the drill ILI9341_t3 Display(CS_PIN, DC_PIN); XPT2046_Touchscreen Touch(T_CS, T_IRQ); TS_Point TouchPoint; SdFat sd; SdFile dataFile; void setup() { Serial.begin(9600); while (!Serial) {} Serial.println("Starting..."); // start the dispaly Display.begin(); Display.setRotation(1); // depending on your exact display getting touch + SD + display working // you may need to adjust the clock speed // default is 30 mhz but you may need to slow to 10000000 or set to as high as 100000000 //Display.setClock(20000000); // start the touch Touch.begin(); Touch.setRotation(1); // start the SD card // depending on your sd card and display, you may need to slow the sd card clock // I find 20 mhz to be pretty reliable bool SDStatus = sd.begin(SD_CS, SD_SCK_MHZ(20)); //bool SDStatus = sd.begin(SD_CS); // test SD and write something if (SDStatus) { Serial.println("SD OK"); dataFile.open("Test.txt", FILE_WRITE); dataFile.print("This is a test"); dataFile.close(); } else { Serial.println("SD failed"); } // test display Display.fillScreen(ILI9341_BLUE); Serial.print("Color of pixel (10,10): "); Serial.println(Display.readPixel(10, 10)); delay(4000); Display.fillScreen(ILI9341_BLACK); } void loop() { if (Touch.touched()) { TouchPoint = Touch.getPoint(); BtnX = TouchPoint.x; BtnY = TouchPoint.y; // consistency between displays is a mess... // this is some debug code to help show // where you pressed and the resulting map // x = map(x, real left, real right, 0, width); // y = map(y, real bottom, real top, 0, height); // tft with black headers, yellow headers will be different BtnX = map(BtnX, 3700, 300, 0, 320); BtnY = map(BtnY, 3800, 280, 0, 240); // Serial.print(", Mapped: "); // Serial.print(BtnX); // Serial.print(","); // Serial.println(BtnY); Display.fillCircle(BtnX, BtnY, 3, ILI9341_RED); // delay(5); } }

### ⭐⭐⭐⭐⭐ ILI9341
*by I***N on October 31, 2025*

Hi quality and great for price. Connection is a little bit complicated but working great for projects (game console, LVGL and etc)

### ⭐⭐⭐⭐⭐ Great, and it is slow, BUT you can do partial refreshes
*by B***M on October 5, 2025*

Works great. As others have mentioned it's slow doing a full screen refresh. However, it does support doing partial updates, which are significantly faster. For example, using the Adafruit Python Driver, you can call the image function and give it just part of the screen you want to update. This is nearly instantaneous, and has worked well for me.

## Frequently Bought Together

- HiLetgo ILI9341 2.8" SPI TFT LCD Display Touch Panel 240X320 with PCB 5V/3.3V STM32
- EDGELEC 120pcs Breadboard Jumper Wires 10cm 15cm 20cm 30cm 40cm 50 cm 100cm Wire Length Optional Dupont Cable Assorted Kit Male to Female Male to Male Female to Female Multicolored Ribbon Cables
- HiLetgo ESP-WROOM-32 ESP32 ESP-32S Development Board 2.4GHz Dual-Mode WiFi + Bluetooth Dual Cores Microcontroller Processor Integrated with Antenna RF AMP Filter AP STA for Arduino IDE

---

## Why Shop on Desertcart?

- 🛒 **Trusted by 1.3+ Million Shoppers** — Serving international shoppers since 2016
- 🌍 **Shop Globally** — Access 737+ million products across 21 categories
- 💰 **No Hidden Fees** — All customs, duties, and taxes included in the price
- 🔄 **15-Day Free Returns** — Hassle-free returns (30 days for PRO members)
- 🔒 **Secure Payments** — Trusted payment options with buyer protection
- ⭐ **TrustPilot Rated 4.5/5** — Based on 8,000+ happy customer reviews

**Shop now:** [https://www.desertcart.com.my/products/47594654-hiletgo-ili9341-2-8-spi-tft-lcd-display-touch-panel](https://www.desertcart.com.my/products/47594654-hiletgo-ili9341-2-8-spi-tft-lcd-display-touch-panel)

---

*Product available on Desertcart Malaysia*
*Store origin: MY*
*Last updated: 2026-02-05*