TFT ST7735 1,8″: подключение к ESP32 и Arduino

Цветной дисплей 128×160

Маленький цветной экран: графики, картинки, интерфейсы. SPI на пять проводов, библиотеки Adafruit.

Как работает

Контроллер ST7735 управляет TFT-матрицей 128×160 с 16-битным цветом. Интерфейс — SPI, хотя выводы на модуле часто подписаны SDA и SCL: это MOSI и SCK, к I2C они отношения не имеют. DC переключает «команда/данные», RST — сброс, CS — выбор.

Библиотеки Adafruit ST7735 и Adafruit GFX: tft.initR(INITR_BLACKTAB), tft.fillScreen(ST77XX_BLACK), tft.setTextColor(), tft.print(), фигуры и картинки.

Выводы

ВыводНазначение
CSвыбор дисплея
DCкоманда/данные (иногда A0)
RSTсброс
SCKтакт SPI
SDAданные SPI (MOSI)
VCCпитание
GNDобщий провод

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

TFT ST7735 1,8″ESP32
CSGPIO5
DCGPIO2
RSTGPIO4
SCKGPIO18
SDAGPIO23
VCC3V3
GNDGND

Схема из примера «TFT ST7735: цвет и фигуры».

TFT ST7735: цвет и фигуры

Открыть пример целиком
Код скетча
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

const int CS = 5, DC = 2, RST = 4;
Adafruit_ST7735 tft(CS, DC, RST);

void setup() {
  tft.initR(INITR_BLACKTAB);   // 128x160, чёрная плёнка на шлейфе
  tft.fillScreen(ST77XX_BLACK);

  tft.fillRect(10, 10, 50, 30, ST77XX_RED);
  tft.fillRect(70, 10, 50, 30, ST77XX_GREEN);
  tft.fillCircle(64, 80, 25, ST77XX_BLUE);

  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setCursor(12, 120);
  tft.print("PinPort");
}

void loop() {
  // Бегущая полоса внизу экрана: видно, что кадр обновляется, а не
  // нарисован один раз.
  static int x = 0;
  tft.fillRect(0, 145, 128, 8, ST77XX_BLACK);
  tft.fillRect(x, 145, 20, 8, ST77XX_YELLOW);
  x = (x + 4) % 128;
  delay(40);
}

В железе

Логика дисплея — 3,3 В. С Arduino Uno на 5 В ставят резисторы 1 кОм в сигнальные линии или преобразователь уровней. Подсветка (вывод LED/BL) — на 3,3 В через резистор или на ШИМ для регулировки яркости.

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

Другие детали