Полное руководство по дисплею ST7789 и Arduino

В этом уроке мы покажем, как подключить и использовать цветной IPS дисплей на контроллере ST7789 вместе с Arduino Nano. Сначала вы научитесь выводить текст «Hello World», а затем создадите простой измеритель температуры и влажности в реальном времени с помощью датчика DHT11 и ST7789. к концу вы будете уверенно управлять этим дисплеем в любых своих проектах.

руководство по дисплею ST7789

Что понадобится для проекта

  • Arduino Nano или совместимая плата
  • Цветной IPS дисплей на контроллере ST7789
  • Датчик температуры и влажности DHT11
  • Макетная плата (breadboard)
  • Набор джампер‑проводов
  • Arduino IDE для загрузки кода

Назначение выводов дисплея ST7789

Вывод дисплея Пин Arduino Назначение
GND GND Общий провод
VCC 5V или 3.3V Питание дисплея
SCL / CLK D13 Тактовый сигнал SPI
SDA / MOSI D11 Передача данных SPI
RES D8 Перезагрузка дисплея
DC D7 Режим данных / команд

Принцип работы

ST7789 — это цветной IPS TFT дисплей с разрешением примерно 240×240 пикселей и управляется по интерфейсу SPI. Arduino отправляет команды и данные по SPI, а дисплей рисует графику или текст. Первым шагом обычно выводят текст «Hello World», а затем можно расширить проект до показа измерений датчиков, например, температуры и влажности.

руководство по дисплею ST7789

Установка библиотек

Перед работой с дисплеем в Arduino IDE нужно установить две библиотеки:

  • Adafruit GFX — графическая базовая библиотека
  • Adafruit ST7789 — драйвер для дисплея ST7789
Они доступны через «Скетч → Подключить библиотеку → Управлять библиотеками…».

Первый пример — Hello World

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

// Пины дисплея
#define TFT_CS   10
#define TFT_RST  8
#define TFT_DC   7

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.init(240, 240); // Инициализация
  tft.fillScreen(ST77XX_BLACK); // Черный фон
  tft.setTextColor(ST77XX_WHITE); // Белый текст
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.print("Hello World!");
}

void loop() {
  // Пусто — Hello World показывается один раз
}

Этот скетч инициализирует дисплей, очищает экран и выводит текст «Hello World!» белым цветом на черном фоне.

Пример с датчиком DHT11

Следующий шаг — отобразить значения температуры и влажности на экране в реальном времени. Для этого понадобится библиотека DHT и немного кода для чтения датчика. Ниже приведён пример:

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <DHT.h>

#define TFT_CS   10
#define TFT_RST   8
#define TFT_DC    7

#define DHTPIN    2
#define DHTTYPE   DHT11

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  tft.init(240, 240);
  tft.fillScreen(ST77XX_BLACK);

  dht.begin();
}

void loop() {
  float humidity = dht.readHumidity();
  float temp = dht.readTemperature();

  tft.fillScreen(ST77XX_BLACK);

  tft.setCursor(10, 10);
  tft.setTextSize(2);
  tft.setTextColor(ST77XX_CYAN);
  tft.print("Temp: ");
  tft.print(temp);
  tft.println(" C");

  tft.setCursor(10, 50);
  tft.setTextColor(ST77XX_YELLOW);
  tft.print("Humidity: ");
  tft.print(humidity);
  tft.println(" %");

  delay(2000);
}

Этот код периодически считывает данные с датчика DHT11 и обновляет экран, показывая текущие значения температуры и влажности.

FAQ — Дисплей ST7789 с Arduino

Можно ли использовать ST7789 без SPI?

Нет, дисплей ST7789 работает через SPI — такова спецификация контроллера.

Зачем нужны библиотеки Adafruit?

Библиотеки Adafruit упрощают рисование графики и текста, а также инициализацию дисплея.

Какой максимальный размер дисплея ST7789?

Типичный ST7789 имеет разрешение до 240×240 пикселей, но встречаются другие варианты с похожим интерфейсом.

Можно ли показать изображение?

Да — используя дополнительные функции библиотек можно рисовать изображения и графику.

Почему экран остаётся пустым?

Обычно это из‑за неправильных соединений или отсутствия питания подсветки дисплея.

Заключение

ST7789 — мощный и яркий дисплей, который можно легко использовать в проектах Arduino для отображения текста, графиков и данных с датчиков. Он идеально подходит для визуализации информации в реальных проектах и помогает освоить работу с графической библиотекой.