TFT екрани, управлявани от чип ST7789VI Те са отличен избор за Arduino и други проекти за микроконтролери. Тези малки, но с висока разделителна способност екрани ви позволяват да показвате графики, текст и изображения ясно и точно. Интегрирането му обаче може да бъде донякъде предизвикателство за тези, които не са запознати с протоколи като SPI или изисквания за мощност и контрол. В това ръководство ще се потопим във всички аспекти на свързване, използване на библиотеки и конфигуриране на тези екрани с вашия Arduino.
Освен това ще научите как да ги свързвате с различни платки като NodeMCU ESP8266 и класическия Arduino Nano. По този начин ще можете да се възползвате напълно от графичните и технически възможности на този тип дисплеи, независимо дали за проекти за интернет на нещата (IoT) или за друг тип приложение, без да зависи от SD карти или сложни схеми.
Какво е TFT дисплей с драйвер ST7789VI?
Екраните TFT (Тънкослоен транзистор) се характеризират с предлагане на качество на изображението, което е много по-добро от други видове екрани, като нормални LCD или по-малки OLED. Контролерът ST7789VI Това е мозъкът на тези екрани, отговорен за обработката на сигналите, изпратени до него от микроконтролер като Arduino или ESP8266, и преобразуването на тези сигнали в изображения, цветове и сложни графики.
Едно от големите предимства на тези дисплеи е, че те използват комуникационната шина SPI, което опростява връзката с повечето микроконтролери, използвайки само четири контролни пина (SDA, SCL, RES и DC). Това позволява окабеляването да бъде значително намалено и е идеално за компактни проекти.
Свързване на TFT екрана с чип ST7789VI
За да работите с тези екрани, важно е да знаете как да ги свържете правилно към вашия Arduino или ESP8266. В зависимост от микроконтролера, който използвате, щифтовете за захранване и свързване може леко да се променят. По-долу описваме най-важните връзки.
Основни връзки:
- VCC: Свързва се към захранващия сигнал, който обикновено е 3.3 V (не 5 V, за да избегнете повреда на екрана).
- GND: Свързан е със заземяване.
- SCL (понякога маркиран с CLK): Това е щифтът на серийния часовник и отива към D13 върху чиния Arduino Uno или Нано.
- S.D.A. (означен също като MOSI): Това е щифтът, който изпраща данните и се свързва към D11.
- ВЕИ: Свързва се с щифта, отговорен за нулиране на екрана; в този случай, при D8 на Arduino.
- DC: Пинът за команда/данни, който се свързва към D9.
Относно плочите ESP8266, ще забележите, че те работят при 3.3 V, така че няма да е необходимо да се притеснявате за регулиране на нивата на напрежение, както е в случая с Arduino, където е необходимо да се използват делители на напрежение с резистори за защита на контролера на дисплея.
Използване на библиотеки в Arduino
След като направите всички връзки правилно, ще трябва да инсталирате някои библиотеки в Arduino IDE. За работа с тези екрани най-използваната опция е библиотеката Adafruit ST7789, който е силно съвместим с хардуера на тези дисплеи и можем да го използваме заедно с библиотеката Adafruit GFX за създаване на усъвършенствани графики.
За да инсталирате библиотеките, изпълнете следните стъпки:
- Отидете на Скица -> Включване на библиотека -> Управление на библиотеки.
- пиша ST7789 в лентата за търсене и изберете опцията Adafruit.
- Направете същото за библиотеката 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" в центъра му. Можете да експериментирате с различни размери или цветове на текста, като използвате методите setTextColor, 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 карта, която съхранява изображението и позволява зареждане от него. Въпреки това, можем да избегнем тази стъпка, като конвертираме изображенията в растерни кодове и ги съхраняваме директно в паметта на микроконтролера.
Процесът е по-прост, отколкото изглежда. Просто трябва да използвате някакъв софтуер, за да конвертирате вашето изображение и след това да го вградите в заглавен файл. Тук ви показваме стъпките, които трябва да следвате:
- Изберете изображение, за предпочитане 240x240 пиксела (размера на дисплея).
- Използвайте програма като LCD конвертор на изображения за преобразуване на изображението в масив от стойности.
- Запазете генерирания масив и копирайте данните в заглавния (.h) файл на вашия Arduino проект.
След това с помощта на функцията pushImage() от библиотеката Adafruit ST7789, можете да заредите този масив и да покажете въпросното изображение.
Не забравяйте, че този метод е идеален за малки и средни проекти, тъй като ограниченията на паметта на микроконтролера могат да работят срещу вас, ако се опитате да заредите много големи изображения наведнъж.
И накрая, работата с TFT екрани със ST7789VI във вашите Arduino или ESP8266 проекти отваря свят от графични възможности. С правилна конфигурация и правилните софтуерни инструменти можете да реализирате атрактивни и функционални интерфейси без твърде много неуспехи.