Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp46 [2020/05/25 19:06] – [Программный код эксперимента] 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%> | ||
| Строка 15: | Строка 15: | ||
| Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке 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=" | <file python Exp46.py[enable_line_numbers=" | ||
| Строка 40: | Строка 52: | ||
| tft.initr() | tft.initr() | ||
| - | tft.clear(tft.rgbcolor(0, | + | tft.clear(tft.rgbcolor(0, |
| tft.text(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%> | ||
| + | - Выведи другой текст по середине дисплея | ||
| + | - Выведи несколько строк разными цветами друг под другом | ||
| + | </ | ||
| + | |||