Дисплей 1.8″ с разрешением 128×160 точек на контроллере ST7735S — популярное решение для проектов на Arduino, ESP32 и STM32. Он оснащён слотом для SD‑карты, поддерживает цветовую палитру до 262 144 цветов и работает по интерфейсу SPI, что делает его удобным для подключения к микроконтроллерам.
Характеристики дисплея
- Разрешение: 128×160 точек
- Цветовая палитра: до 262 144 цветов (18‑бит)
- Интерфейс: SPI (Serial Peripheral Interface)
- Питание: 3.3 В
- Контроллер: ST7735S
- Слот для SD‑карты
Подключение к ESP32 S3 Zero
В примере используется микроконтроллер ESP32 S3 Zero. Для работы с дисплеем применяется библиотека TFT_eSPI, которую можно установить через диспетчер библиотек Arduino IDE. После установки необходимо указать пины подключения дисплея в файле User_Setup.h по пути: C:\Users\_Name_\Documents\Arduino\libraries\TFT_eSPI.
#define ST7735_DRIVER // Драйвер ST7735 (контроллер дисплея)
#define TFT_WIDTH 128 // Ширина экрана в пикселях
#define TFT_HEIGHT 160 // Высота экрана в пикселях
#define USE_HSPI_PORT // Используем HSPI-порт ESP32
#define TFT_MOSI 4 // MOSI — передача данных на дисплей (SDA)
#define TFT_SCLK 5 // SCLK — тактовый сигнал SPI (SCK)
#define TFT_CS 3 // CS — выбор устройства (Chip Select)
#define TFT_DC 6 // DC — переключение между данными и командами (A0)
#define TFT_RST 2 // RST — сброс дисплея (RESET)
#define TFT_BL -1 // Подсветка (Backlight). -1 — отдельный пин не используется
#define SPI_FREQUENCY 20000000 // Частота SPI: 20 МГц — оптимальный баланс
Практические нюансы подключения
- RST пин обязателен для корректной работы (без него изображение у меня не выводилось).
- Подсветка имеет отдельный вывод — можно запитать напрямую от 3.3 В (я сделал управление подсветкой через транзистор)
- До инициализации дисплей может показывать «рябь» — это нормальное поведение.
- Реализовано включение подсветки через транзистор 2SC9015 после инициализации микроконтроллера.
Отдельный пин LED для включения подсветки — отличное решение но управление подсветкой нужно реализовывать исключительно через транзистор а не напрямую через пин микроконтроллера. Это позволяет скрыть рябь, которую дисплей показывает между подачей питания и инициализацией. Слот для SD‑карты в примере не использовался, но он даёт возможность выводить фоновые изображения.
Работа со шрифтами
Шрифты по умолчанию в библиотеке TFT_eSPI не всегда удобны для вывода текста. Поэтому можно использовать сторонние шрифты, предварительно конвертировав их в формат, понятный дисплею.
Создание LCD‑шрифта для TFT_eSPI
Для создания собственного шрифта используется скрипт Create_font, который находится в папке:
C:\Users\_Name_\Documents\Arduino\libraries\TFT_eSPI\Tools\Create_Smooth_Font\Create_font
Для запуска скрипта необходимо установить Processing (среда визуального программирования). В Processing открываем скрипт Create_font из библиотеки TFT_eSPI и указываем имя .ttf шрифта который мы хотим конвертировать в понятный для контроллера:
String fontName = "FontsName";
String fontType = ".ttf";
Также задаём размер: int fontSize = 10; и int displayFontSize = 10;. После запуска появится окно с демонстрацией символов выбранного шрифта.
Сконвертированный шрифт сохранится в папке:
C:\Users\_Name_\Documents\Arduino\libraries\TFT_eSPI\Tools\Create_Smooth_Font\Create_font\FontFiles
Далее копируем его в папку библиотеки TFT_eSPI:
C:\Users\_Name_\Documents\Arduino\libraries\TFT_eSPI\Fonts\Custom
Использование кастомного шрифта
Для подключения шрифта в проект Arduino добавляем:
#include <Fonts/Custom/Dig1818.h>
А при выводе данных используем:
tft.loadFont(Dig1818);
Если нужны шрифты разных размеров — конвертируйте несколько вариантов, указывая для каждого свой размер.
Надеюсь эта статья будет полезной для Вас при использовании дисплея ST7735S в ваших проектах.





Комментарии к статье
Пока нет комментариев. Будьте первым!
Добавить комментарий