Подключение дисплея ST7735 к ESP32
Цветной дисплей 128×160
ST7735 к ESP32 — по SPI: SCK (GPIO18), SDA/MOSI (GPIO23), CS, DC и RST на свободные выводы, питание 3,3 В. Дисплей 3,3-вольтовый, как и ESP32, преобразователь уровней не нужен.
Схема подключения дисплея ST7735 к ESP32
| TFT ST7735 1,8″ | ESP32 |
|---|---|
| CS | GPIO5 |
| DC | GPIO2 |
| RST | GPIO4 |
| SCK | GPIO18 |
| SDA | GPIO23 |
| VCC | 3V3 |
| GND | GND |
Схема из примера «TFT ST7735: цвет и фигуры».
Выводы TFT ST7735 1,8″
| Вывод | Назначение |
|---|---|
| CS | выбор дисплея |
| DC | команда/данные (иногда A0) |
| RST | сброс |
| SCK | такт SPI |
| SDA | данные SPI (MOSI) |
| VCC | питание |
| GND | общий провод |
Код для ESP32
#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);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- ST7735 принимает данные только в одну сторону (MOSI), MISO не нужен.
- Подсветку BL подключают к 3,3 В или к GPIO с ШИМ, чтобы менять яркость.
Частые ошибки при подключении к ESP32
- Перепутать DC и CS: экран заливается шумом.
- Неверный тип инициализации
initR(INITR_BLACKTAB): цвета смещены, а картинка сдвинута; тип (GREENTAB, REDTAB) зависит от партии дисплея. - Цветной мусор по краю или сдвинутая картинка — не тот вариант инициализации: попробуйте
INITR_BLACKTAB,INITR_GREENTAB,INITR_144GREENTAB. - Подключение к выводам I2C из-за подписей SDA/SCL — дисплей работает по SPI.
- Белый экран без изображения — не подключён RST или DC, или перепутаны.
fillScreenна каждом кадре — медленно и мерцает. Перерисовывайте только изменившиеся области.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230