Следующая версия | Предыдущая версия |
products:laboratory_iot:exp48 [2020/05/26 15:25] – создано labuser29 | products:laboratory_iot:exp48 [2024/12/12 11:13] (текущий) – [Программный код эксперимента] labuser30 |
---|
===== Эксперимент 48. Отображение картинки ===== | ===== Эксперимент 48. Отображение картинки ===== |
| |
Мы уже научились отображать на дисплее текст и графические примитивы. Из этих элементов мы уже можем отображать пользовательский интерфейс, меню и выводить информацию с различных датчиков. Но для красивого интерфейса нужны еще икноки, пикрограммы и просто картинки. Кроме того, многие игры отображаются с помощью спрайтов — небольших прямоугольных изображений из которых строится вся сцена и персонажи. | Мы уже научились отображать на дисплее текст и графические примитивы. Из этих элементов мы уже можем отображать пользовательский интерфейс, меню и выводить информацию с различных датчиков. Но для красивого интерфейса нужны еще иконки, пиктограммы и просто картинки. Кроме того, многие игры отображаются с помощью спрайтов — небольших прямоугольных изображений из которых строится вся сцена и персонажи. |
| |
Существует множество графических форматов, в которых можно сохранять изображения. Самым простым является формат BMP. В данном формате можно хранить только однослойные растры. В этом формате просто описывается цвет каждой точки изображения. На каждый пиксель в разных файлах может приходиться разное количество бит (глубина цвета). Сейчас этот формат распространен мало так как он не подразумевает никакого сжатия данных и картинки имеют большой вес, зато с ним легко работать. С помощью встроенного в Windows простейшего графического редактора Paint без труда можно сконвертировать картинки в этот формат. | Существует множество графических форматов, в которых можно сохранять изображения. Самым простым является формат BMP. В данном формате можно хранить только однослойные растры. В этом формате просто описывается цвет каждой точки изображения. На каждый пиксель в разных файлах может приходиться разное количество бит (глубина цвета). Сейчас этот формат распространен мало так как он не подразумевает никакого сжатия данных и картинки имеют большой вес, зато с ним легко работать. С помощью встроенного в Windows простейшего графического редактора Paint без труда можно сконвертировать картинки в этот формат. |
| |
| Наш дисплей имеет разрешение 128*160 точек. Попробуем занять весь дисплей одним большим изображением. Тогда оно должно быть такого же размера. Если оно будет меньше — то останется незаполненная область экрана. Если больше — обрежется. Можно загрузить в память микроконтроллера любое свое изображение, но если подходящего изображения под рукой нет, то можно скачать нашу картинку с самолетом и загрузить в МК ее. |
| |
| <WRAP center round download 60%> |
| {{ :products:esp-iot:plane.zip |}} |
| </WRAP> |
| |
==== Схема эксперимента ==== | ==== Схема эксперимента ==== |
| |
{{ :products:esp-iot:exp24_mon.png?direct&600 |}} | {{ :products:esp-iot:exp24_mon.png?direct&600 |}} |
//Рисунок 1. Монтажная схема эксперимента// | //Рисунок 1. Монтажная схема эксперимента для дисплея с 8 выводами// |
| |
| {{ :products:esp-iot:exp24_mon_11pin.png?direct&600 |}} |
| //Рисунок 2. Монтажная схема эксперимента для дисплея с 11 выводами// |
| ==== Программный код эксперимента ==== |
| Выведем картинку на дисплей. |
| |
| <file python Exp48.py[enable_line_numbers="2", start_line_numbers_at="1"]> |
| from machine import Pin, SPI |
| from tft import TFT_GREEN |
| _init() |
| |
| |
| dc = Pin(4, Pin.OUT) |
| cs = Pin(2, Pin.OUT) |
| rst = Pin(5, Pin.OUT) |
| |
| spi = SPI(1, baudrate=40000000, polarity=0, phase=0) |
| tft = TFT_GREEN(128, 160, spi, dc, cs, rst, rotate=0) |
| |
| tft.initr(tft.BGR) # tft.initr(tft.RGB) #Если вместо синего цвета отображается красный, а вместо красного синий |
| |
| # Отображаем картинку с именем plane.bmp начиная с координаты 0, 0 |
| # Измените название файла на свое, если у вас другая картинка |
| tft.draw_bmp(0,0,'plane.bmp') |
| </file> |
| |
| <WRAP center round important 60%> |
| Дисплеи, которые могут быть в комплекте набора MAXI, отличаются не только количеством выводов, но и встроенными настройками, которые влияют на передачу цвета. Функция ''tft.initr'' инициализирует дисплей, подготавливает его к работе. В качестве параметра данная функция принимает настройку цвета — **tft.BGR** или **tft.RGB**. Если вместо красного цвета на дисплее отображается синий, а вместо синего- красный, то необходимо сменить настройку цвета на другую. |
| </WRAP> |
| |