Skip to content

ST7735 — цветной SPI-экран (128×160)

Цветной TFT-экран на чипе ST7735 через SPI: вывод текста, геометрических примитивов и простой анимации. В отличие от датчиков этого репозитория, здесь нет tools/*.py — сам экран уже и есть визуализация.

TFT_display — цветной SPI-экран ST7735 (128×160)

Компонент управляет цветным TFT-экраном на чипе ST7735 через SPI: вывод текста, геометрических примитивов и простой анимации. В отличие от компонентов-датчиков этого репозитория, здесь нет tools/*.py — сам экран уже и есть визуализация, дополнительный слой на компьютере не нужен.

Драйвер построен поверх готовых библиотек Adafruit_GFX/Adafruit_ST7735 (это полноценный, проверенный драйвер экрана — как и RF24 для радио, он не переписывается заново). Класс TFTDisplay даёт свой прикладной API поверх Adafruit и не пробрасывает оригинальный объект наружу — подробнее о том, почему это важно, см. THEORY.md.

Файлы

  • include/tft_display.h / src/tft_display.cpp — драйвер.
  • src/main.cpp — тестовый стенд: 4 демонстрации (текст, геометрия, анимация, динамические данные).
  • THEORY.md — физика TFT-матрицы, протокол SPI+DC, формат цвета RGB565.
  • WIRING.md — схема подключения для всех поддерживаемых плат.
  • Lesson.md — методический план урока для учителя.

Подключение (кратко, esp32dev)

ST7735ESP32 (esp32dev)
VCC3.3V
GNDGND
CSGPIO5
RSTне подключается (программный ресет)
DCGPIO2
SCKGPIO18 (аппаратный SPI)
MOSIGPIO23 (аппаратный SPI)

Пины автоматически переключаются под плату через #if defined(...) в tft_display.h:13-33 — полная таблица для esp32c6/esp32-s3/esp8266 и объяснение каждого контакта — в WIRING.md.

Быстрый старт

  1. Собрать схему по WIRING.md.
  2. Прошить: pio run -e esp32dev -t upload.
  3. При старте экран покажет заставку, затем зациклит 4 демонстрации: уведомления (текст), сетка линий, бегущий круг, счётчик времени работы.

API драйвера

МетодНазначение
begin(rotation)Инициализация чипа ST7735 и поворот экрана.
clear(color)Заливка всего экрана цветом.
showMessage(title, subtitle, titleColor)Заголовок + подзаголовок в фиксированной раскладке.
drawBorder(color)Рамка по периметру экрана.
drawLine(x0, y0, x1, y1, color)Линия между двумя точками.
fillCircle(x, y, radius, color)Закрашенный круг.
printAt(x, y, text, color, textSize)Текст в произвольной позиции произвольным размером.
width() / height()Размер экрана в пикселях с учётом поворота.

Палитра цветов (COLOR_BLACK, COLOR_RED, …) — константы класса, tft_display.h:42-49, формат RGB565 — см. THEORY.md.

Известные ограничения

  • Плата esp32c6 в этом репозитории падает на известном баге фреймворка Arduino (конфликт макроса Serial/USBSerial) — не регрессия этого компонента, см. COMPONENT_STANDARD.md. Используйте esp32dev или esp32-s3.
  • printAt() принимает только const char* — для вывода чисел форматируйте строку заранее через snprintf (пример — main.cpp, тест 4).