Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| 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%> | ||
| + | - Выведи другой текст по середине дисплея | ||
| + | - Выведи несколько строк разными цветами друг под другом | ||
| + | </ | ||