===== Эксперимент 48. Отображение картинки =====
Мы уже научились отображать на дисплее текст и графические примитивы. Из этих элементов мы уже можем отображать пользовательский интерфейс, меню и выводить информацию с различных датчиков. Но для красивого интерфейса нужны еще иконки, пиктограммы и просто картинки. Кроме того, многие игры отображаются с помощью спрайтов — небольших прямоугольных изображений из которых строится вся сцена и персонажи.
Существует множество графических форматов, в которых можно сохранять изображения. Самым простым является формат BMP. В данном формате можно хранить только однослойные растры. В этом формате просто описывается цвет каждой точки изображения. На каждый пиксель в разных файлах может приходиться разное количество бит (глубина цвета). Сейчас этот формат распространен мало так как он не подразумевает никакого сжатия данных и картинки имеют большой вес, зато с ним легко работать. С помощью встроенного в Windows простейшего графического редактора Paint без труда можно сконвертировать картинки в этот формат.
Наш дисплей имеет разрешение 128*160 точек. Попробуем занять весь дисплей одним большим изображением. Тогда оно должно быть такого же размера. Если оно будет меньше — то останется незаполненная область экрана. Если больше — обрежется. Можно загрузить в память микроконтроллера любое свое изображение, но если подходящего изображения под рукой нет, то можно скачать нашу картинку с самолетом и загрузить в МК ее. Так как размер картинки значительно больше текстовых файлов, которые мы создавали/загружали ранее, необходимо задать размер файловой системы. Для этого выбери:
Инструменты
Flash size
4MB (FS:1MB OTA:~1019KB)
{{ :products:esp-iot:plane.zip |}}
Для отображения картинки нам потребуется библиотека "LittleFS_ImageReader", которую придется установить вручную. Для этого нужно скачать архив по ссылке ниже и поместить папку "LittleFS_ImageReader", которая находится в архиве и содержит два файла с расширениями ".h" и ".cpp", в папку "libraries". Папка "libraries" расположена по следующему пути — C:\Users\\Documents\Arduino
( это имя твоей учетной записи на компьютере). Также можно открыть в проводнике папку "Документы", а уже в ней папку "Arduino".
{{:products:laboratory_iot_c:littlefs_imagereader.zip|}}
==== Схема эксперимента ====
{{ :products:esp-iot:exp24_mon.png?direct&600 |}}
//Рисунок 1. Монтажная схема эксперимента для дисплея с 8 выводами//
{{ :products:esp-iot:exp24_mon_11pin.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента для дисплея с 11 выводами//
==== Программный код эксперимента ====
Выведем картинку на дисплей.
#include
#include
#include
#define PIN_CS 2
#define PIN_DC 4
#define PIN_RST 5
Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, PIN_DC, PIN_RST);
LittleFS_ImageReader reader; // Создаем объект считывателя
void setup() {
LittleFS.begin();
tft.initR(INITR_BLACKTAB);
tft.setRotation(2);
// Отображаем картинку с именем plane.bmp начиная с координаты 0, 0
// Измените название файла на свое, если у вас другая картинка
reader.drawBMP("/plane.bmp", tft, 0, 0);
}
void loop() {
}