TFT-экраны, управляемые микросхемой ST7789VI. Они являются отличным выбором для Arduino и других проектов микроконтроллеров. Эти небольшие экраны с высоким разрешением позволяют четко и точно отображать графику, текст и изображения. Однако его интеграция может оказаться сложной задачей для тех, кто не знаком с такими протоколами, как SPI, или требованиями к питанию и управлению. В этом руководстве мы углубимся во все аспекты подключения, использования библиотек и настройки этих экранов с помощью Arduino.
Кроме того, вы узнаете, как соединить их с разными платами, такими как NodeMCU ESP8266 и классическая Arduino Nano. Таким образом, вы сможете в полной мере воспользоваться графическими и техническими возможностями дисплеев этого типа как для проектов Интернета вещей (IoT), так и для любого другого типа приложений, не завися от SD-карт или сложных схем.
Что такое TFT-дисплей с драйвером ST7789VI?
Экраны ТФТ (Тонкопленочный транзистор) характеризуются тем, что обеспечивают качество изображения, намного превосходящее другие типы экранов, такие как обычные ЖК-дисплеи или OLED-дисплеи меньшего размера. Контроллер ST7789VI Это мозг этих экранов, отвечающий за обработку сигналов, отправляемых микроконтроллером, таким как Arduino или ESP8266, и преобразование этих сигналов в изображения, цвета и сложную графику.
Одним из больших преимуществ этих дисплеев является то, что они используют коммуникационную шину SPI, которая упрощает соединение с большинством микроконтроллеров, используя всего четыре контакта управления (SDA, SCL, RES и DC). Это позволяет значительно сократить количество проводов и идеально подходит для компактные проекты.
Подключение TFT-экрана с чипом ST7789VI
Чтобы работать с этими экранами, важно знать, как правильно подключить их к Arduino или ESP8266. В зависимости от используемого вами микроконтроллера контакты питания и подключения могут незначительно меняться. Ниже мы подробно рассмотрим наиболее важные связи.
Основные соединения:
- VCC: подключается к сигналу питания, который обычно составляет 3.3 В (а не 5 В, чтобы избежать повреждения экрана).
- GND: Он подключен к земле.
- SCL (иногда обозначается CLK): это вывод последовательной синхронизации, который подключается к D13 на тарелке Arduino Uno или Нано.
- SDA (также обозначается как MOSI): это контакт, который отправляет данные и подключается к D11.
- RES: подключается к контакту, отвечающему за сброс экрана; в этом случае в D8 из Ардуино.
- DC: вывод команды/данных, который подключается к D9.
По поводу тарелок ESP8266, вы заметите, что они работают при напряжении 3.3 В, поэтому вам не придется беспокоиться о регулировке уровней напряжения, как в случае с Arduino, где для защиты контроллера дисплея необходимо использовать делители напряжения с резисторами.
Использование библиотек в Arduino
После того, как все подключения выполнены правильно, вам нужно будет установить некоторые библиотеки в Arduino IDE. Для работы с этими экранами чаще всего используется библиотека Адафрут ST7789, который хорошо совместим с аппаратным обеспечением этих дисплеев, и мы можем использовать его вместе с библиотекой Адафрут GFX для создания продвинутой графики.
Чтобы установить библиотеки, выполните следующие действия:
- Перейти к Эскиз -> Включить библиотеку -> Управление библиотеками.
- Запись ST7789 в строке поиска и выберите опцию Adafruit.
- Сделайте то же самое для библиотеки Адафрут GFX.
Когда эти две библиотеки уже установлены, вы будете готовы написать свой первый код и отображать изображения, текст или любую графику, которую захотите.
Базовый код для «Hello, World!» на TFT-экране
Хорошей отправной точкой для тестирования вашего экрана является отображение простого сообщения «Hello, World!» на экране. Ниже мы покажем вам базовый код, который вы можете использовать для этой цели. Помните, что этот код предназначен для Arduino Uno или Nano, но если вы используете другие платы, возможно, вам придется адаптировать контакты.
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
#define TFT_CS 10
#define TFT_RST 8
#define TFT_DC 9
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
void setup() {
tft.init(240, 240);
tft.setRotation(1);
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setCursor(50, 120);
tft.println("Hello World!");
}
void loop() {
// Nada que hacer en el loop
}
Этот небольшой код инициализирует экран, поворачивает его по горизонтали и отображает в центре текст «Hello World». Вы можете поэкспериментировать с разными размерами и цветами текста, используя методы установитьтекстколор, setTextSize, Среди других.
Графические возможности дисплея ST7789VI
Графические возможности этих экранов достаточно полны. С помощью библиотеки Adafruit GFX вы можете рисовать линии, прямоугольники, круги и многое другое с помощью всего лишь нескольких команд. Ниже мы перечислим некоторые из наиболее часто используемых:
- drawLine(x0, y0, x1, y1, цвет): Нарисуйте линию от точки (x0, y0) до (x1, y1).
- fillRect(x, y, w, h, цвет): рисует на экране закрашенный прямоугольник.
- fillCircle (x, y, r, цвет): Нарисуйте сплошной круг радиуса r из точки (x, y).
Эти основные методы позволят вам быстро оживить экран, но библиотека также позволяет импортировать изображения в Bitmap, что очень полезно, если вы хотите отображать сложные графики.
Для работы с изображениями вам необходимо предварительно преобразовать их в формат, понятный Arduino, как мы объясним позже.
Импортируйте изображения на экран без использования SD-карты.
Обычно для загрузки изображений на TFT-экран требуется подключенная SD-карта, на которой хранится изображение и можно загружать с него. Однако мы можем избежать этого шага, преобразовав изображения в растровый код и сохранив их непосредственно в памяти микроконтроллера.
Процесс проще, чем кажется. Вам просто нужно использовать какое-нибудь программное обеспечение, чтобы преобразовать изображение, а затем встроить его в файл заголовка. Здесь мы покажем вам шаги, которые необходимо выполнить:
- Выберите изображение, желательно 240х240 пикселей (размер дисплея).
- Используйте программу типа Конвертер ЖК-изображений для преобразования изображения в массив значений.
- Сохраните сгенерированный массив и скопируйте данные в файл заголовка (.h) вашего проекта Arduino.
Тогда с помощью функции pushImage() из библиотеки Adafruit ST7789 вы можете загрузить этот массив и отобразить соответствующее изображение.
Помните, что этот метод идеально подходит для небольших и средних проектов, поскольку ограничения памяти микроконтроллера могут сработать против вас, если вы попытаетесь загрузить много больших изображений одновременно.
Наконец, работа с TFT-экранами с ST7789VI в ваших проектах Arduino или ESP8266 открывает мир графических возможностей. При правильной настройке и подходящих программных инструментах вы сможете реализовать привлекательные и функциональные интерфейсы без особых проблем.