ST7735 TFT 1.8-inch with an Arduino Uno

A 1.8-inch 128x160 color TFT LCD breakout driven by an ST7735S controller over a 4-wire SPI interface.

ST7735 TFT 1.8-inch, A 1.8-inch 128x160 color TFT LCD breakout driven by an ST7735S controller over a 4-wire SPI interface.
In short

The MSP1803 takes 3.3 V to 5 V on VCC through its regulator, but its logic is 3.3 V TTL with no level shifters, so on an Arduino Uno the five lines the Uno drives (D2, D3, D4, D11, D13) should pass through a level shifter. SDA and SCK use the Uno's hardware SPI pins, while CS, RESET and A0 take D2, D3 and D4.

Wiring the ST7735 TFT 1.8-inch to the Arduino Uno

Pin by pin.

ST7735 TFT 1.8-inchArduino UnoNote
VCC5V
GNDGND
CSD2through a level shifter to 3.3 V
RESETD3through a level shifter to 3.3 V
A0D4through a level shifter to 3.3 V
SDAD11through a level shifter to 3.3 V
SCKD13through a level shifter to 3.3 V
LED3V3
  • The board's regulator feeds the ST7735 3.3 V from VCC, but its signal pins take no more than VDDI + 0.3 V: put a level shifter (a 74LVC245 or a BSS138 board) between the Uno's 5 V outputs and CS, RESET, A0, SDA and SCK.

What to know on the Arduino Uno

  • The board's logic is 3.3 V and it has a regulator but no level shifters, so its inputs must not be driven above VDDI + 0.3 V. The Uno drives 5 V, so the page's rows pass SDA, SCK, CS, A0 and RESET through a level shifter such as a 74LVC245 or a BSS138 board.LCDWiki MSP1803 product parameters; Sitronix ST7735 datasheet V2.1, p. 19
  • A 128 × 160 frame in RGB565 is 40,960 bytes, twenty times the Uno's SRAM, so the Adafruit library writes straight into the ST7735's memory and the Uno draws shapes and text without a buffer.Arduino UNO R3 tech specs
  • CS is on D2 rather than D10, but SPI.begin() still sets D10, the Uno's SS pin, as an output. Leave D10 unused or use it as an output; as an input pulled low it would knock the Uno's SPI out of master mode.Microchip ATmega328P datasheet DS40002061B, SPI section
  • LED goes to the Uno's 3.3V pin for the backlight; that pin is rated 50 mA in total, so other 3.3 V parts on it share the same budget.LCDWiki MSP1803 user manual, p. 6; Arduino UNO R3 tech specs

ST7735 TFT 1.8-inch code for the Arduino Uno

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

Libraries: adafruit/Adafruit ST7735 and ST7789 Library, adafruit/Adafruit GFX Library
// ST7735 TFT 1.8-inch on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/st7735-tft-1-8/arduino-uno
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS  2
#define TFT_DC  4   // wired to the A0 pin
#define TFT_RST 3

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.initR(INITR_BLACKTAB);
  tft.fillScreen(ST77XX_RED);
  delay(500);
  tft.fillScreen(ST77XX_BLUE);
  tft.setCursor(10, 10);
  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.println("Hi ST7735");
}

void loop() {}

ST7735 TFT 1.8-inch on the Arduino Uno: questions

Does the 1.8 inch ST7735 TFT need a level shifter on an Arduino Uno?

Yes, for in-spec operation. The module regulates VCC but its logic pins are 3.3 V with no level shifting (LCDWiki MSP1803), and the Uno drives 5 V on SDA, SCK, CS, A0 and RESET.

Why is the ST7735 screen white or blank on my Uno?

Check initR(INITR_BLACKTAB) matches your panel (try GREENTAB or REDTAB variants), that A0 is wired to the pin given as TFT_DC (D4 here), and that LED has 3.3 V for the backlight.

Can the Uno buffer a frame for the ST7735?

No: a full frame is 40,960 bytes against the Uno's 2,048 bytes of SRAM. Draw directly with Adafruit_GFX calls.

Keep going

For AI assistants

This guide as plain Markdown. /components/st7735-tft-1-8/arduino-uno.md

What will you build with it?