Это старая версия документа!


Эксперимент 46. Подключаем TFT дисплей

В комплектацию конструктора в версии 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 выводами

Программный код эксперимента

Напишем приветственную надпись на дисплее.

Exp46.ino
  1. #include <SPI.h>
  2. #include <Adafruit_ST7735.h>
  3.  
  4. #define PIN_CS 5
  5. #define PIN_DC 4
  6. #define PIN_RST 16
  7.  
  8. Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, PIN_DC, PIN_RST);
  9.  
  10. void setup() {
  11. tft.initR(INITR_BLACKTAB);
  12. tft.setRotation(2);
  13. tft.fillScreen(ST77XX_BLACK);
  14. tft.setCursor(0, 0);
  15. tft.setTextColor(ST77XX_WHITE);
  16. tft.print("Hello world!");
  17. }
  18.  
  19. void loop() {
  20. }

Подключаем библиотеки для работы в портами ввода-вывода, шиной SPI, дисплеем и шрифт.

  1. #include <SPI.h>
  2. #include <Adafruit_ST7735.h>

TFT дисплей не имеет встроенного знакогенератора, он ничего не знает о буквах и о том как они выглядят. Дисплей — это просто большой массив точек, которые могут светиться различным цветом. .

Настраиваем выводы, используемые для дисплея

  1. #define PIN_CS 5
  2. #define PIN_DC 4
  3. #define PIN_RST 16

Создаем объект дисплея и задаем какие выводы микроконтроллера используются для управления.

  1. Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, PIN_DC, PIN_RST);

Вызываем функцию инициализации дисплея. Прежде чем мы сможем работать с дисплеем, мы должны настроить встроенный в него контроллер. Это делает функция инициализации.

  1. tft.initR(INITR_BLACKTAB);

Переворачиваем изображение. Если этого не сделать, изображение на дисплее для нас буде «верх ногами».

  1. tft.setRotation(2);

Когда дисплей инициализирован мы можем управлять изображением на нем. Сначала закрасим его черным цветом, установим курсор в координаты 0,0, зададим цвет текста — белый, и выведем текст.

  1. tft.fillScreen(ST77XX_BLACK);
  2. tft.setCursor(0, 0);
  3. tft.setTextColor(ST77XX_WHITE);
  4. tft.print("Hello world!");

Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом. Рисунок 3. Отсчет координат на дисплее

Дополнительное задание

  1. Выведи другой текст по середине дисплея
  2. Выведи несколько строк разными цветами друг под другом