narod stream
496 subscribers

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

В предыдущей части урока мы начали писать тесты для проверки работы дисплея, добавляя при этом дополнительные служебные функции.

Вернёмся в файл spi_ili9341.c и и выше функции TFT9341_ini добавим функцию вывода прямой линии на экран

Все эти функции нам знакомы ещё со времён работы с контроллерами AVR. На других контроллерах мы их только обкатывали и доводили до ума. Поэтому рассказывать о коде в их телах, думаю, что нет смысла.

Объявим на данную функцию прототип в заголовочной функции и добавим в бесконечном цикле в функции app_main файла main.c ещё один тест по выводу параллельных линий случайного цвета на экран

Посмотрим, как работает код данного теста

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

Линии выводятся не очень быстро, так как вывод идёт попиксельный. Можно, конечно сделать отдельные функции вывода горизонтальных и вертикальных линий, где выводить их как прямоугольники, но я заморачиваться не стал, думаю, это несложно и кому потребуется, тот сделает это самостоятельно.

Теперь добавим ещё один тест по выводу линий со случайными координатами

Посмотрим, как работает тест

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3
ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

Вернёмся в файл spi_ili9341.c и выше функции TFT9341_ini добавим функцию вывода неокрашенного прямоугольника (только его границы)

Добавим на функцию прототип в заголовочном файле и в бесконечном цикле в функции app_main файла main.c добавим ещё один тест по выводу прямоугольников на экран

Проверим, как работает тест

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

Перейдём в файл spi_ili9341.c и выше функции TFT9341_ini добавим функцию вывода окружности определённого цвета и радиуса на экран

Объявим прототип данной функции в заголовочном файле и в бесконечном цикле в функции app_main файла main.c добавим ещё один тест по выводу окружностей определённого радиуса случайного цвета в случайные места экрана

Проверим данный тест

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

Теперь вывод текста.

Из проекта урока 171 по контроллерам STM32 с именем ILI9341_SPI скопируем файлы fonts.hfont8.cfont12.cfont16.cfont20.c и font24.c в каталог main нашего проекта.

Подключим файл fonts.h в файле spi_ili9341.h

Не забываем также подключить файлы в CMakeLists.txt

set(COMPONENT_SRCS "main.c spi_ili9341.c font24.c font20.c font16.c font12.c font8.c")

В файле spi_ili9341.c объявим глобальную структуру вместе с переменной

Выше функции TFT9341_ini добавим функции инициализации цвета текста и фона, а также размера шрифта

Ниже добавим функцию вывода символа на экран

Ещё ниже — функцию вывода на экран строки текста

Ещё ниже — функцию изменения ориентации экрана

В заголовочном файле добавим на все эти 6 функций прототипы и в бесконечном цикле в функции app_main файла main.c добавим тест по выводу текста на экран — сначала посимвольно, а затем строками, используя шрифты различного размера, цвета на различном фоне, а также меняя ориентацию экрана

Испытаем работу данного теста

ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3
ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3
ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3
ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3
ESP32 Урок 11. SPI. Дисплей TFT 240×320. Часть 3

Итак, на данном уроке мы закрепили знания по программированию передачи данных по шине SPI, также изучили некоторые новые тонкости по данной теме, подключив цветной дисплей TFT разрешением 320×240 к контроллеру ESP32.

Всем спасибо за внимание!

Оригинал статьи находится здесь.

<<Предыдущая часть | Следующий урок>>

Исходный код

Недорогие отладочные платы ESP32 можно купить здесь: Недорогие отладочные платы ESP32

Дисплей 2,8 дюймов 240×320 SPI TFT LCD

Логический анализатор 16 каналов можно приобрести здесь

Многофункциональный переходник CJMCU FT232H USB к JTAG UART FIFO SPI I2C

Видео в Дзен

Видео в Youtube