Подключение Дисплея GMT130-V1.0 (IPS 240×240, контроллер ST7789) к Arduino Nano

ST7789

Подключение GMT130-V1.0 (IPS 240×240, контроллер ST7789) к Arduino Nano

Ниже — рабочая инструкция: распиновка, замечания по питанию/уровням логики и готовый пример скетча с использованием библиотек Adafruit (самый простой путь).

ST7789

1) Коротко о важном

  • Модуль на ST7789 работает от 3.3 В. Нельзя подавать 5 В на VCC/логические входы.
  • Arduino Nano — 5 В логика; требуется преобразование уровней для линий MOSI, SCK, DC, CS, RST (или использовать модуль с встроенным лог-шифтером).
  • Аппаратный SPI на Nano:
  • MOSI = D11,
  • MISO = D12,
  • SCK = D13.
  • ST7789 обычно использует только MOSI+SCK (без MISO).
  • Подсветку (BL, LED, BCK или BLK) обычно подключают к 3.3 В через транзистор/резистор либо к PWM-выходу через N-MOSFET/PNP, если нужен ярк-контроль.

2) Рекомендованная распиновка (названия могут отличаться на модуле: SDA/MOSI, SCL/SCK, DC, RST, CS, BL, VCC, GND)

Модуль (GMT130)Arduino Nano
GNDGND
VCC (или 3.3V)3.3V (на Nano или отдельный стабилизатор)
SCL / SCKD13 (SCK)
SDA / MOSID11 (MOSI)
RSTD9 (пример) — можно и к RESET модуля напрямую
DC (или D/C)D8 (пример)
BL / LED / BCK3.3V (через транзистор/резистор) или Arduino D3 для ШИМ
ST7789

Если модуль имеет Согласование логических уровней 5→3.3В — провода можно вести напрямую.
Если нет — используйте 74HCT125/4050/level shifter или N-MOSFET/ резисторные делители (для MOSI/SCK не рекомендуется делитель ).


3) Подключение подсветки (без шим)

Если не нужен регулировка яркости: BL → 3.3V (через резистор, если требуется).
Если нужен PWM: Arduino D3 → N-MOSFET (например 2N7002 или 2N2222 с подтяжкой) → минус подсветки; плюс подсветки → 3.3V. Общий GND обязателен.


4) Библиотеки (установите через Library Manager)

  • Adafruit GFX Library
  • Adafruit ST7735 and ST7789 Library

(оба доступны в Library Manager Arduino IDE)


5) Пример скетча (использует аппаратный SPI)

Скопируйте и загрузите в Arduino IDE. Подставьте пины, которые вы выбрали

(в примере —

CS=D10,

DC=D8,

RST=D9).

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

// Настройте пины согласно вашей проводке:
#define TFT_CS   10
#define TFT_DC   8
#define TFT_RST  9   // Можно -1 если RST не подключён

// Объект дисплея (использует аппаратный SPI)
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  // Настройка последовательного вывода для отладки
  Serial.begin(115200);
  delay(100);

  // Инициализация SPI и дисплея
  tft.init(240, 240, SPI_MODE2); // width, height для ST7789 240x240
  tft.setRotation(0); // при необходимости меняйте
  tft.fillScreen(ST77XX_BLACK);

  // Пример вывода
  tft.setTextWrap(true);
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.setTextColor(ST77XX_WHITE);
  tft.println("ST7789 240x240");
  tft.setTextSize(1);
  tft.setCursor(10, 50);
  tft.println("GMT130-V1.0");
  
  // Простой график/цветной прямоугольник
  tft.fillRect(10, 80, 220, 100, ST77XX_RED);
  tft.drawRect(9, 79, 222, 102, ST77XX_WHITE);
}

void loop() {
  // мигать подсветкой, если подключена к пину PWM через транзистор (пример D3)
  // analogWrite(3, 128); // 0..255
  delay(1000);
}


6) Полезные советы и отладка

  1. Питание: убедитесь, что 3.3 В стабилен и может отдавать достаточный ток (модули могут тянуть 100–300 мА при яркой подсветке). Лучше использовать отдельный регулятор 3.3 В, не нагрузить 3.3 V вывод Arduino если он слабый.
  2. Преобразование уровней: если не уверены — используйте буфер/level shifter. Подключение 5 В на линиях MOSI/SCK может повредить дисплей.
  3. Неправильная ориентация/цвета: попробуйте менять tft.setRotation() и инициализацию (некоторые варианты ST7789 требуют tft.init(240, 240) vs tft.init(240, 320); для 240×240 ставим 240,240).
  4. Медленная или неиспользуемая часть экрана: проверьте правильность ширины/высоты и пинов CS/DC/RST.
  5. Если модуль подписан SCL/SDA — это SPI, но названия похожи на I2C; ориентируйтесь по остальным пинам (CS, DC, RST) — это SPI-дисплей.

Author: admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *