
TFT 1.8″ / 2.4″ с энкодером EC11
TFT+EC11 12P: 1.8 ST7735S / 2.4 ST7789
Цветной экран с энкодером и двумя кнопками
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает TFT+EC11 12P: 1.8 ST7735S / 2.4 ST7789
Цветной экран, механический энкодер с нажатием и ещё одна кнопка расположены на общей плате. Такой модуль удобен для передней панели таймера, регулятора, домашнего прибора или измерительного устройства: поворот выбирает пункт или меняет значение, кнопки подтверждают действие и возвращают назад.
В семействе сохранены два разных исполнения: 1.8″ с ST7735S и 128×160 пикселями; 2.4″ с ST7789 и 240×320 пикселями. Поворот изображения даёт 160×128 или 320×240. У них отличаются панель, размеры платы и инициализация. Это одна карточка вариантов, а не утверждение об одинаковом железе.
Экран получает данные по SPI. A и B, PUSH и K0 читаются отдельными GPIO; дисплей не передаёт нажатия по SPI. PUSH — нажатие оси EC11, K0/KEY0 — отдельная кнопка. Сенсорного слоя нет. Контакты требуют подавления дребезга. Названия Baishundianzi и TZT относятся к предложениям продавцов; изготовитель конкретной PCB не установлен.
Оба исполнения относятся к размерной группе «Средний». У общей карточки нет одного числового значения диагонали: 1.8″ и 2.4″ перечислены как варианты, поэтому единый числовой фильтр диагонали для неё не заполнен.
Подключение подсветки опирается на два отдельно названных исполнения поставщиков: ARD-TFT180-ENK1.8″ поддерживает 3.3-вольтовое PWM-управление BLK; у HE1324 2.4″ также подтверждена работа подсветки при неподключённом BLK. Состояние BLK по умолчанию у 1.8″ не переносится с 2.4″.
Характеристики
- Исполнения
- 1.8″: ST7735S, 128×160; 2.4″: ST7789, 240×320
- Размерная группа
- Средний
- Дисплей
- SPI, 12-контактная общая колодка
- Органы управления
- EC11 A/B, PUSH и отдельная K0/KEY0
- Сенсорный ввод
- Нет
- Питание модуля
- Пример использует питание 3.3 В и сигналы 3.3 В. Для 1.8″ поставщик ARD-TFT180-ENK прямо описывает BLK как PWM-управление и требует 3.3 В для управляющих сигналов. Допуск 5 В на питание иных ревизий не переносится на GPIO.
ПРАКТИКА
Подключение

| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| GND | GND | Общая земля. |
| VCC | 3V3 | Питание модуля, не GPIO. |
| SCL | GPIO18 | Тактовый сигнал SPI SCK; это не I²C. |
| SDA | GPIO23 | SPI MOSI; это не I²C. |
| RES | GPIO25 | ESP32 DevKitC, классический ESP32-WROOM-32; не универсальная распиновка ESP32. |
| DC | GPIO26 | ESP32 DevKitC, классический ESP32-WROOM-32; не универсальная распиновка ESP32. |
| CS | GPIO27 | ESP32 DevKitC, классический ESP32-WROOM-32; не универсальная распиновка ESP32. |
| BLK | GPIO22 | PWM-управление 3.3 В, 50% заполнения в примере; это управляющий сигнал, не питание светодиодов от GPIO. Поддержка PWM для 1.8″ подтверждена поставщиком ARD-TFT180-ENK. Для 2.4″ HE1324 подтверждает BLK как control; NC даёт постоянно включённую подсветку. |
| A | GPIO32 | Первая фаза EC11, INPUT_PULLUP. |
| B | GPIO33 | Вторая фаза EC11, INPUT_PULLUP. |
| PUSH | GPIO21 | Нажатие оси, INPUT_PULLUP, активный LOW. |
| K0 / KEY0 | GPIO19 | Отдельная кнопка, INPUT_PULLUP, активный LOW. |
Подходит для ESP32, Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать TFT+EC11 12P: 1.8 ST7735S / 2.4 ST7789. Сначала уточни точную плату микроконтроллера, среду, вариант модуля, маркировку разъёма и задачу. Проверь питание отдельно от уровней GPIO. Подготовь согласованные подключение, зависимости, минимальный пример и проверку изображения. Не переноси GPIO классического ESP32 на ESP32-C3/C6/S3. Не выдумывай неподтверждённые свойства платы.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Библиотека
Adafruit ST7735 and ST7789 Library 1.11.0Установить вместе с зависимостями через Library Manager.
- Вариант 2.4″
Adafruit_ST7789; init(240, 320)В примере выбран этот вариант; landscape задаётся setRotation(1).
- Вариант 1.8″
Adafruit_ST7735; initR(INITR_BLACKTAB)Стартовый профиль 128×160; проверить границы и RGB/BGR на своей ревизии панели.
- Среда примера
Arduino-ESP32 3.xИспользованы ledcAttach(pin, frequency, resolution) и ledcWrite(pin, duty); для core2.x API другой.
- Старт подсветки
ledcAttach(22, 1000, 8); ledcWrite(22, 128);GPIO22 — управляющий PWM3.3 В. Заполнение 50% даёт средний тестовый режим без предположения о полярности; внутреннюю схему не реконструировали.
ESP32 DevKitC + Arduino: экран, энкодер и две кнопки
cpp#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_ST7789.h>
#define TFT_VARIANT_18 0 // 0: 2.4 ST7789; 1: 1.8 ST7735S
#if TFT_VARIANT_18
Adafruit_ST7735 display(27, 26, 23, 18, 25);
#else
Adafruit_ST7789 display(27, 26, 23, 18, 25);
#endif
constexpr int A = 32, B = 33, PUSH = 21, KEY0 = 19;
int value = 0, partial = 0;
uint8_t previousAB;
const int8_t transition[16] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
struct Button { int pin; bool raw = HIGH, stable = HIGH; uint32_t changed = 0; explicit Button(int p) : pin(p) {} };
Button push{PUSH}, key{KEY0};
bool pressed(Button &b) {
bool r = digitalRead(b.pin);
if (r != b.raw) { b.raw = r; b.changed = millis(); }
if (millis() - b.changed >= 25 && b.stable != b.raw) {
b.stable = b.raw;
return b.stable == LOW;
}
return false;
}
void drawValue() {
display.fillRect(8, 32, 144, 32, ST77XX_BLACK);
display.setCursor(8, 32);
display.print(value);
}
void setup() {
Serial.begin(115200);
if (!ledcAttach(22, 1000, 8) || !ledcWrite(22, 128)) {
Serial.println("Backlight PWM setup failed");
while (true) delay(1000);
}
const int inputs[] = {A, B, PUSH, KEY0};
for (int p : inputs) pinMode(p, INPUT_PULLUP);
previousAB = (digitalRead(A) << 1) | digitalRead(B);
#if TFT_VARIANT_18
display.initR(INITR_BLACKTAB);
#else
display.init(240, 320, SPI_MODE0);
#endif
display.setRotation(1);
display.fillScreen(ST77XX_BLACK);
display.drawRect(0,0,display.width(),display.height(),ST77XX_WHITE);
display.setTextColor(ST77XX_GREEN); display.setTextSize(2);
display.setCursor(8,8); display.print("EC11");
drawValue();
}
void loop() {
uint8_t ab = (digitalRead(A) << 1) | digitalRead(B);
if ((ab ^ previousAB) == 3) partial = 0; // Reject skipped/invalid states.
else partial += transition[(previousAB << 2) | ab];
previousAB = ab;
if (partial >= 4 || partial <= -4) {
value += partial > 0 ? 1 : -1;
partial = 0; drawValue();
}
if (pressed(push)) Serial.println("PUSH");
if (pressed(key)) { value = 0; drawValue(); Serial.println("KEY0"); }
}
Полный исходный пример для классического ESP32 DevKitC, Arduino-ESP323.x и Adafruit1.11.0; API проверены по первичным исходникам/документации. На физическом модуле не запускался и не компилировался. BLK получает PWM1 кГц, 50%: это выбранный тестовый режим, не паспортная частота и не точное утверждение о яркости. Такой старт не требует угадывать полярность регулировки. Для 2.4″ HE1324 отдельно подтверждён постоянный свет при NC; default для 1.8″ не утверждается. Проверьте RGB-порядок, рамку, обе кнопки и направление EC11; число переходов на щелчок зависит от энкодера.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


