В комплектацию конструктора в версии MAXI входит TFT дисплей. Thin Film Transistor (TFT) – это система производства жидкокристаллических дисплеев, в основе которой лежит активная матрица из тонкопленочных транзисторов. При подаче напряжения на такую матрицу, кристаллы поворачиваются друг к другу, что приводит к образованию черного цвета. Отключение электричества дает противоположный результат — кристаллы образовывают белый цвет. Изменения подаваемого напряжения позволяет формировать любой цвет на каждом отдельно взятом пикселе. Дисплей имеет сложное многослойное строение и чтобы понять его принцип действия потребуются некоторые знания физики, поэтому здесь мы не будем рассказывать это.
Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Установите библиотеку «Adafruit ST7735 and ST7789» как мы уже делали ранее. После нажатия кнопки «Установка» появится окно «Установите зависимости библиотек» с предложением установить необходимые зависимости. Нужно нажать «Установить все».
Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.
Для работы с SPI требуется специальная библиотека, но она уже встроена, поэтому дополнительно загружать ее не потребуется.
В разных партиях конструктора версии MAXI может лежать дисплей одного из двух видов − либо с 8 выводами, либо с 11. В дальнейшем мы будем приводить монтажную схему для обоих дисплеев, но вам необходимо руководствоваться схемой для своего типа дисплея.
Рисунок 1. Монтажная схема эксперимента для дисплея с 8 выводами
Рисунок 2. Монтажная схема эксперимента для дисплея с 11 выводами
Напишем приветственную надпись на дисплее.
#include <SPI.h> #include <Adafruit_ST7735.h> #define PIN_CS 2 #define PIN_DC 4 #define PIN_RST 5 Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, PIN_DC, PIN_RST); void setup() { tft.initR(INITR_BLACKTAB); tft.setRotation(2); tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 0); tft.setTextColor(ST77XX_WHITE); tft.print("Hello world!"); } void loop() { }
Подключаем библиотеки для работы в портами ввода-вывода, шиной SPI, дисплеем и шрифт.
#include <SPI.h> #include <Adafruit_ST7735.h>
TFT дисплей не имеет встроенного знакогенератора, он ничего не знает о буквах и о том как они выглядят. Дисплей — это просто большой массив точек, которые могут светиться различным цветом. .
Настраиваем выводы, используемые для дисплея
#define PIN_CS 2 #define PIN_DC 4 #define PIN_RST 5
Создаем объект дисплея и задаем какие выводы микроконтроллера используются для управления.
Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, PIN_DC, PIN_RST);
Вызываем функцию инициализации дисплея. Прежде чем мы сможем работать с дисплеем, мы должны настроить встроенный в него контроллер. Это делает функция инициализации.
tft.initR(INITR_BLACKTAB);
Переворачиваем изображение. Если этого не сделать, изображение на дисплее для нас буде «верх ногами».
tft.setRotation(2);
Когда дисплей инициализирован мы можем управлять изображением на нем. Сначала закрасим его черным цветом, установим курсор в координаты 0,0, зададим цвет текста — белый, и выведем текст.
tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 0); tft.setTextColor(ST77XX_WHITE); tft.print("Hello world!");
Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом.
Рисунок 3. Отсчет координат на дисплее