Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp46 [2020/05/25 18:47] – labuser29 | products:laboratory_iot:exp46 [2024/11/30 20:33] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 46. Подключаем TFT дисплей ===== | ===== Эксперимент 46. Подключаем TFT дисплей ===== | ||
- | В комплектаицю конструктора в версии MAXI входит TFT дисплей. Thin Film Transistor (TFT) – это система производства жидкокристаллических дисплеев, | + | В комплектацию конструктора в версии MAXI входит TFT дисплей. Thin Film Transistor (TFT) – это система производства жидкокристаллических дисплеев, |
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Строка 9: | Строка 9: | ||
Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Кроме того нам потребуется библиотека со шрифтом, | Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Кроме того нам потребуется библиотека со шрифтом, | ||
+ | <WRAP center round download 60%> | ||
{{ : | {{ : | ||
+ | </ | ||
+ | |||
Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке py) и предварительно откомпилированные (в папке mpy). Мы рекомендуем загружать в микроконтроллер откомпилированные версии файлов, | Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке py) и предварительно откомпилированные (в папке mpy). Мы рекомендуем загружать в микроконтроллер откомпилированные версии файлов, | ||
+ | Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, | ||
+ | Для работы с SPI требуется специальная библиотека, | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | [[https:// | ||
+ | </ | ||
+ | |||
+ | В разных партиях конструктора версии MAXI может лежать дисплей одного из двух видов − либо с 8 выводами, | ||
+ | |||
+ | ==== Схема эксперимента ==== | ||
+ | |||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | {{ : | ||
+ | // | ||
+ | ==== Программный код эксперимента ==== | ||
+ | Напишем приветственную надпись на дисплее. | ||
+ | |||
+ | <file python Exp46.py[enable_line_numbers=" | ||
+ | from machine import Pin, SPI | ||
+ | from tft import TFT_GREEN | ||
+ | import font | ||
+ | _init() | ||
+ | |||
+ | dc = Pin(4, Pin.OUT) | ||
+ | cs = Pin(2, Pin.OUT) | ||
+ | rst = Pin(5, Pin.OUT) | ||
+ | |||
+ | spi = SPI(1, baudrate=40000000, | ||
+ | |||
+ | tft = TFT_GREEN(128, | ||
+ | |||
+ | tft.initr() | ||
+ | |||
+ | tft.clear(tft.rgbcolor(0, | ||
+ | tft.text(0, | ||
+ | </ | ||
+ | |||
+ | Подключаем библиотеки для работы в портами ввода-вывода, | ||
+ | <code python[enable_line_numbers=" | ||
+ | from machine import Pin, SPI | ||
+ | from tft import TFT_GREEN | ||
+ | import font | ||
+ | </ | ||
+ | |||
+ | TFT дисплей не имеет встроенного знакогенератора, | ||
+ | |||
+ | Настраиваем выводы, | ||
+ | <code python[enable_line_numbers=" | ||
+ | dc = Pin(4, Pin.OUT) | ||
+ | cs = Pin(2, Pin.OUT) | ||
+ | rst = Pin(5, Pin.OUT) | ||
+ | </ | ||
+ | |||
+ | Настраиваем шину SPI. Объявляем скорость шины и ее параметры. | ||
+ | <code python[enable_line_numbers=" | ||
+ | spi = SPI(1, baudrate=40000000, | ||
+ | </ | ||
+ | |||
+ | Создаем объект дисплея и задаем его параметры, | ||
+ | <code python[enable_line_numbers=" | ||
+ | tft = TFT_GREEN(128, | ||
+ | </ | ||
+ | |||
+ | Вызываем функцию инициализации дисплея. Прежде чем мы сможем работать с дисплеем, | ||
+ | <code python[enable_line_numbers=" | ||
+ | tft.initr() | ||
+ | </ | ||
+ | |||
+ | Когда дисплей инициализирован мы можем управлять изображением на нем. Сначала закрасим его черным цветом, | ||
+ | <code python[enable_line_numbers=" | ||
+ | tft.clear(tft.rgbcolor(0, | ||
+ | tft.text(0, | ||
+ | </ | ||
+ | |||
+ | Как мы уже знаем из [[products: | ||
+ | |||
+ | Для вывода текста используем метод '' | ||
+ | * координата X | ||
+ | * координата Y | ||
+ | * строка для отображения | ||
+ | * шрифт | ||
+ | * цвет шрифта | ||
+ | * размер шрифты | ||
+ | |||
+ | Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом. | ||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | ==== Дополнительное задание ==== | ||
+ | <WRAP center round tip 60%> | ||
+ | - Выведи другой текст по середине дисплея | ||
+ | - Выведи несколько строк разными цветами друг под другом | ||
+ | </ | ||