Главная → Дисплеи

Цветной TFT-дисплей 1.8″ на ST7735: обзор и подключение

18 сентября 2026 · Дисплеи

Экран 16×2 показывает только готовые символы из своей прошивки. Этот модуль — другой жанр: 128×160 = 20 480 пикселей, и каждый закрашивается любым из 262 144 оттенков. График с датчика, меню, анимация, картинка — всё сюда, а подключение почти как у текстового LCD: питание, земля и четыре линии SPI.

Что внутри

Сердце модуля — контроллер Sitronix ST7735 (на свежих плашках — ST7735S). По datasheet это single-chip решение: контроллер, драйвер матрицы и кадровые цепи в одном кристалле, внутри — память кадра 132×162×18 бит (384 912 бит). Контроллер сам помнит картинку и обновляет матрицу на 60 Гц, поэтому микроконтроллеру достаточно однажды залить данные.

Матрица модуля — 128×160, а память рассчитана на 132×162: запас по краям не виден, и библиотеки задают смещение. У модулей Waveshare, например, изображение начинается со второго пикселя по горизонтали и первого по вертикали. Смещение задано неверно — картинка уезжает, а по краю лезет мусор.

Палитра: полный режим — 262 144 цвета (RGB 6-6-6), экономный idle-режим — 8 цветов. Формат пикселя выбирается командой: 12, 16 или 18 бит. Библиотеки используют 16-битный RGB565 — два байта на пиксель, по пять бит на красный и синий, шесть на зелёный.

Характеристики из паспортов

Параметр Значение
Разрешение матрицы 128×160 (контроллер держит до 132×162)
Контроллер ST7735/S Sitronix: 262 144 цвета (RGB 666), idle — 8 цветов
Память кадра 132×162×18 бит (384 912 бит) внутри контроллера
Формат пикселя 12/16/18 бит на выбор; библиотеки — RGB565
Питание логики VDD 2,6–3,3 В (тип. 2,75 В); интерфейс VDDI 1,65–3,3 В
Уровни входа VIH ≥ 0,7×VDDI, VIL ≤ 0,3×VDDI
SPI цикл записи 66 нс (≈15 МГц), чтение 150 нс (≈6,7 МГц)
Интерфейсы параллельный 8080 (8/9/16/18 бит), 3- и 4-проводной SPI
Питание модуля 3,3 или 5 В (у Waveshare логика равна питанию)
Подсветка белые LED на выводе BL, допустима ШИМ-регулировка
Зона изображения 35,04×28,03 мм, шаг пикселя 0,219 мм (Waveshare)
Обновление кадра 60 Гц
Температура −30…+85 °C (контроллер)

Источники: datasheet Sitronix «ST7735» V2.1 от 01.02.2010, вики Waveshare «1.8inch LCD Module», гайд Adafruit «1.8″ TFT Display».

Подключение к Arduino

Пины модуля: VCC, GND, DIN, CLK, CS, DC, RST, BL. Для UNO по вики Waveshare: VCC → 5 V, GND → GND; DIN → D11 (MOSI) и CLK → D13 (SCK) — аппаратный SPI; CS → D10, DC → D7, RST → D8, BL → D9.

DC — служебный пин: ноль означает «идёт команда», единица — «идут данные пикселей». RST сбрасывает контроллер, BL включает подсветку — на большинстве плат его можно посадить на ШИМ и менять яркость программно.

Тонкость UNO — память: кадр RGB565 занимает 128×160×2 = 40 960 байт, а ОЗУ у ATmega328P всего 2 КБ. Поэтому библиотека кадр не хранит: она открывает окно записи командами CASET/RASET и шлёт пиксели в SPI на лету, а массовые заливки вроде fillScreen обходятся дороже всего.

Подключение к ESP32

Логика здесь 3,3 В, и это удачно: порог единицы у контроллера 0,7×VDDI, при питании интерфейса от 3,3 В это 2,31 В — сигналы ESP32 проходят без всякого согласования. Распиновка под аппаратный VSPI: SCK → GPIO18, MOSI → GPIO23, CS → GPIO5, DC → GPIO2, RST → GPIO4, BL → GPIO15, VCC → 3V3.

Осторожно с 5-вольтовыми модулями: у некоторых (например, Waveshare) при подаче 5 В на VCC логика тоже становится 5-вольтовой — для ESP32 это прямой путь к выгоранию входов. Питайте модуль от 3,3 В.

Код

Ставим из менеджера библиотек Adafruit ST7735/ST7789 и Adafruit GFX. Код для UNO:

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS  10
#define TFT_DC   7
#define TFT_RST  8
#define TFT_BL   9

Adafruit_ST7735 tft(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  pinMode(TFT_BL, OUTPUT);
  digitalWrite(TFT_BL, HIGH);   // подсветка включена
  tft.initR(INITR_BLACKTAB);    // инициализация красной плашки
  tft.setRotation(1);           // 0..3 — поворот картинки
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextColor(ST77XX_GREEN);
  tft.setTextSize(2);
  tft.setCursor(4, 10);
  tft.print("ST7735 128x160");
  tft.drawCircle(64, 90, 34, ST77XX_RED);
}

void loop() {}

Для ESP32 меняются только пины: перед initR() вызовите SPI.begin(18, -1, 23, TFT_CS), а DC, RST и BL перевесьте на 2, 4 и 15.

Частые ошибки

  1. Белый экран. Подсветка горит, картинки нет — инициализация не прошла. Проверьте CS, DC и RST в конструкторе: перепутанные DC и CS дают именно этот симптом. Библиотека вызывается через initR() — без него контроллер не настраивается.
  2. Красный и синий поменялись местами. Ревизии ST7735R/S различаются «табами» на плашке: initR(INITR_BLACKTAB), INITR_REDTAB и INITR_GREENTAB задают разную цветовую карту и смещения. Цвета странные — попробуйте другой таб.
  3. Сдвиг картинки и мусор по краю. Память 132×162 против матрицы 128×160: нужен правильный offset. Библиотека знает его для стандартных табов; на ноунейм-платах помогает правка colstart на 2–3 пикселя.
  4. Модуль питается от 5 В, а контроллер — 3,3-вольтовый. У модулей с логикой, привязанной к питанию, 5 В на VCC означает 5-вольтовую логику — входы ESP32 и Raspberry выгорают. Безопасный вариант: питание 3,3 В и прямое подключение.
  5. Медленная перерисовка на UNO. Скорость упирается в SPI: паспортный максимум — цикл записи 66 нс, то есть около 15 МГц. Уберите лишние fillScreen и рисуйте только изменившиеся области.
  6. Каша на длинных проводах. SPI на 8–15 МГц не прощает макетки со скрутками: укорачивайте SCK и MOSI, общий GND ведите толстым проводом, при сбоях снижайте частоту.

Итог

ST7735 — самый доступный способ добавить в проект цвет. Текстовый LCD1602 с переходником PCF8574 удобен для строк статуса, монохромный OLED на SSD1306 — для компактных индикаторов без подсветки, а этот модуль берёт графику, картинки и меню. Идеальный хозяин для него — ESP32: ОЗУ хватает даже на буфер кадра, и перерисовка идёт без оглядки на 2 КБ UNO.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Питание

Модуль TP4056: зарядка литиевого аккумулятора в проекте на Arduino

Как только устройство перестаёт висеть на USB и переезжает на аккумулятор, появляется вопрос зарядки. Ответ почти всегда один и тот же —…

Читать обзор →
Дисплеи

OLED-дисплей на SSD1306: обзор, подключение, подводные камни

Маленький жёлто-синий или белый экранчик 0,96 дюйма — самый частый дисплей в самодельных приборах. Внутри у него контроллер Solomon Systech SSD1306: он…

Читать обзор →
Контроллеры

Обзор: Arduino Uno, Nano и Pro Mini — чем отличаются и что взять под задачу

Три платы — один чип Uno, Nano и Pro Mini построены на одном ATmega328P: 32 КБ флеша, 2 КБ ОЗУ, 1 КБ…

Читать обзор →