Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.
ST7735 Arduino: Complete 1.8″ TFT Color Display Guide
If you’ve been working with basic character LCDs and want to step up to something more visually impressive, the ST7735 Arduino combination is probably your best entry point into color TFT displays. I’ve integrated dozens of these modules into prototype boards over the years, and they consistently deliver excellent results for the price point.
The ST7735 driver chip powers a compact 1.8-inch TFT screen with 128×160 pixel resolution and full 18-bit color capability (262,144 shades). What makes this display particularly attractive for embedded projects is its SPI interface, which keeps your pin count low while maintaining decent refresh rates.
Why the ST7735 Arduino Pairing Works So Well
When you connect an ST7735 display to an Arduino board, you get a straightforward development path with mature library support. The Adafruit ecosystem has essentially made this combination plug-and-play for most applications.
The display operates through standard SPI communication, meaning you only need four to five control lines beyond power connections. On an Arduino Uno, the hardware SPI pins (D11 for MOSI, D13 for SCK) handle the heavy lifting, while you choose your own pins for chip select, data/command, and reset functions.
ST7735 Display Specifications at a Glance
Parameter
Value
Display Size
1.8 inches diagonal
Resolution
128 × 160 pixels
Color Depth
18-bit (262,144 colors)
Interface
4-wire SPI
Controller IC
ST7735R / ST7735S
Operating Voltage
3.3V logic (modules often include 5V regulator)
Viewing Angle
Approximately 70°
Backlight
White LED (PWM dimmable)
Onboard Features
Most modules include SD card slot
Understanding ST7735 Display Variants
Here’s something that trips up many first-time users: not all ST7735 displays are identical. Manufacturers produce several variants with slightly different internal configurations, and these differences affect initialization code. The colored tab on the protective film historically indicated which variant you had, though this isn’t always reliable anymore.
Common ST7735 Display Types
Variant
Initialization Flag
Notes
Black Tab
INITR_BLACKTAB
Most common 1.8″ variant
Green Tab
INITR_GREENTAB
Different pixel offsets
Green Tab 2
INITR_GREENTAB2
Alternative green tab version
Red Tab
INITR_REDTAB
RGB color order differences
Mini 160×80
INITR_MINI160x80
Smaller form factor display
144 Green Tab
INITR_144GREENTAB
1.44″ square display (128×128)
If your display shows garbled colors, inverted images, or offset pixels, you’re probably using the wrong initialization flag. Try different options until the output looks correct.
Hardware Wiring for ST7735 Arduino Projects
The wiring process is pretty straightforward, but there’s one critical consideration: voltage levels. The ST7735 controller operates on 3.3V logic. Most breakout modules include level shifting or voltage regulators, but if you’re working with a bare display, you’ll need voltage dividers on the signal lines to avoid damaging the controller.
Pin Connections for Arduino Uno
ST7735 Pin
Arduino Uno Pin
Function
VCC
5V (or 3.3V)
Power supply
GND
GND
Ground reference
CS
D10
Chip select (configurable)
RESET
D8
Hardware reset (configurable)
DC/RS
D9
Data/Command selection (configurable)
SDA/MOSI
D11
SPI data line (fixed for hardware SPI)
SCK/CLK
D13
SPI clock (fixed for hardware SPI)
LED/BL
3.3V or PWM pin
Backlight control
For Arduino Mega boards, the hardware SPI pins differ: MOSI connects to D51 and SCK to D52. Arduino Micro users should connect SCK to pin 15 and MOSI to pin 16.
Voltage Divider Considerations
When your module lacks onboard level shifting, implement voltage dividers using 1kΩ and 2kΩ resistors on each signal line. This drops the 5V Arduino output to approximately 3.3V, protecting the display controller. The divider formula is simple: Vout = Vin × (R2 / (R1 + R2)), where R1 connects to Arduino and R2 connects to ground.
Software Setup and Library Installation
Getting the ST7735 Arduino software environment configured takes just a few minutes. The Adafruit libraries have become the de facto standard for driving these displays.
Required Libraries
Open the Arduino IDE and navigate to Sketch → Include Library → Manage Libraries. Search for and install these packages:
Adafruit ST7735 and ST7789 Library handles the display-specific communication protocols and initialization sequences.
Adafruit GFX Library provides the graphics primitives—drawing functions, text rendering, and geometric shapes.
Both libraries are actively maintained and receive regular updates. If you’re running an older Arduino IDE version (pre-1.8.10), you may also need to manually install Adafruit BusIO for proper SPI functionality.
Basic Test Code
After installing libraries, load the graphics test example from File → Examples → Adafruit ST7735 and ST7789 Library → graphicstest. This sketch cycles through various drawing operations and confirms your wiring is correct.
tft.initR(INITR_BLACKTAB); // Initialize for black tab variant
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setCursor(10, 50);
tft.println(“ST7735 Ready!”);
}
void loop() {
// Your application code
}
Change INITR_BLACKTAB to match your display variant if you encounter display issues.
Drawing Graphics and Text
The Adafruit GFX library provides a comprehensive set of drawing functions that work across all supported displays. Once you understand these primitives, you can create complex interfaces.
The default font uses 5×7 pixel characters at size 1, scaling linearly with larger sizes.
Displaying Images from SD Card
Many ST7735 modules include an SD card slot, enabling you to display bitmap images stored on the card. This feature is particularly useful for splash screens, icons, or photo slideshows.
SD Card Wiring
The SD card uses a separate SPI connection sharing the clock and data lines:
SD Card Pin
Arduino Pin
CS
D4 (configurable)
MOSI
D11
MISO
D12
SCK
D13
Image Requirements
The Adafruit library supports 24-bit BMP files only. Prepare your images by converting them to this format at the correct resolution (128×160 maximum for full-screen display). Many image editors can handle this conversion, or use online tools to resize and format appropriately.
Performance Optimization Tips
From my experience optimizing embedded displays, here are practical suggestions for improving ST7735 Arduino performance:
Use Hardware SPI whenever possible. Software SPI allows flexible pin assignments but runs significantly slower—often 4-8× slower than hardware SPI. Unless pin constraints force your hand, stick with hardware SPI.
Minimize full-screen redraws. Clearing and redrawing the entire display creates visible flicker and wastes processing cycles. Instead, update only the regions that have changed by drawing over old content with the background color.
Pre-calculate static elements. If your interface has fixed elements like borders or labels, draw them once during setup() rather than every loop iteration.
Consider the TFT_eSPI library for ESP32/ESP8266. Bodmer’s TFT_eSPI library is optimized for ESP-based boards and offers substantially better performance than the Adafruit libraries on those platforms.
Common Problems and Solutions
Display Shows White Screen Only
The backlight works but nothing displays. This typically indicates a communication failure. Verify your SPI connections, especially MOSI and SCK. Confirm the CS pin is correctly defined in your code and physically connected.
Colors Appear Inverted or Wrong
Your display variant doesn’t match the initialization flag. Try different initR() parameters: INITR_BLACKTAB, INITR_GREENTAB, INITR_REDTAB. Some displays also require color inversion—check library documentation for invertDisplay() function.
Image Appears Offset or Cropped
Green tab variants particularly suffer from pixel offset issues. The library applies different column and row start values based on the initialization flag. If standard options don’t resolve the problem, you may need to modify library source files or use alternative libraries like TFT_eSPI that offer manual offset configuration.
Display Works But Flickers During Updates
Excessive redrawing causes this behavior. Restructure your code to update only changed portions of the display rather than clearing and redrawing everything.
Alternative Libraries for ST7735 Arduino
While Adafruit libraries work for most situations, alternatives exist for specific needs:
TFT_eSPI (by Bodmer) excels on ESP8266 and ESP32 platforms, offering superior performance through optimized SPI handling and DMA support. It also provides more configuration options for unusual display variants.
Arduino TFT Library comes bundled with the Arduino IDE and works adequately for basic applications, though it lacks some advanced features.
ucglib supports hardware acceleration on some displays and offers a different API style that some developers prefer.
Yes, most ST7735 breakout modules include onboard voltage regulators and level shifters that accept 5V input while running the display at 3.3V internally. Check your specific module’s specifications. For bare displays without breakout boards, you must implement voltage dividers or level shifters on signal lines.
Why does my ST7735 display show garbled or mirrored images?
You’re likely using the wrong initialization flag for your display variant. Try different options: INITR_BLACKTAB, INITR_GREENTAB, INITR_REDTAB, or INITR_GREENTAB2. The colored tab on your display’s protective film can provide hints, though this isn’t always reliable with newer production batches.
How do I rotate the display orientation on ST7735 Arduino projects?
Call tft.setRotation(n) where n ranges from 0 to 3, representing 0°, 90°, 180°, and 270° rotation respectively. This function adjusts both the coordinate system and memory access pattern without requiring hardware changes.
What image formats can I display from SD card on ST7735?
The standard Adafruit library supports only 24-bit uncompressed BMP files. Convert other formats (JPEG, PNG) to BMP before loading them onto the SD card. Ensure images are sized appropriately for your display resolution to avoid memory issues during rendering.
Can I connect multiple ST7735 displays to one Arduino?
Yes, SPI supports multiple devices sharing MOSI, MISO, and SCK lines. Each display requires a unique CS (chip select) pin. In software, create separate display objects with different CS pins and initialize each independently. Memory constraints on basic Arduino boards may limit practical implementations.
Final Thoughts
The ST7735 Arduino combination offers an excellent balance of capability, cost, and ease of use for adding color graphics to embedded projects. Whether you’re building sensor dashboards, portable games, or status displays, this 1.8-inch TFT provides sufficient resolution and color depth for most applications.
Start with the Adafruit libraries and basic examples, then gradually incorporate more complex features as your project requires. The learning curve is gentle, and the active community around these displays means help is readily available when you encounter issues.
For projects demanding higher performance or larger displays, the skills you develop working with ST7735 transfer directly to other SPI-based TFT controllers like the ILI9341 or ST7789.
Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.