Блоки для дисплеев TFT SPI

Конструктор из блоков на базе библиотеки TFT_eSPI которая оптимизирована для контроллеров STM32, ESP8266 и ESP32.

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

Блоки для дисплеев TFT SPI

#1

Сообщение DrMario » 02.05.2020{, 13:07}

Набор блоков на базе библиотеки TFT_eSPI которая оптимизирована для контроллеров STM32, ESP8266 и ESP32.
Ссылка на источник библиотеки: https://github.com/Bodmer/TFT_eSPI
Список поддерживаемых чипов дисплеев с тачскрином и без, в том числе с параллельным интерфейсом:
ILI9341, ST7735, ILI9163, S6D02A1, ILI9486, HX8357D, ILI9481, ILI9486, ILI9488, ST7789, ST7789_2, R61581, RM68140, ST7796.
В наборе два основных блока для разных контроллеров и наличия тачскрина. При создании проектов нужно выбрать подходящий главный блок.
По умолчанию все настройки находятся в файле User_Setup.h. библиотеки TFT_eSPI и используются из этого файла.
Для контроллеров ESP достаточно внести необходимые изменения в файле User_Setup.h.
Внимание!
Перед компиляцией необходимо раскомментировать строку #include "FS.h" и вписать в первую очередь, или применять пользовательский контроллер со вписанной строкой.
Эта библиотека должна быть первой, но по непонятной причине меняется очередность.
Для более расширенных настроек, в том числе и для STM32 необходимо в файле User_Setup_Select.h. закомментировать строку #include <User_Setup.h>
и из списка раскомментировать нужный файл, например #include <User_Setups/Setup32_ILI9341_STM32F103.h> // Setup for "Blue Pill"
а все изменения делать в файле Setup32_ILI9341_STM32F103.h из каталога User_Setups.
Для подключения русских шрифтов необходимо в каталог TFT_eSPI\Fonts\GFXFF\ распаковать архив с дополнительными шрифтами, а в файл gfxfont.h добавить следующие строки:
// Cyrillic (Russian fonts)
#include <Fonts/GFXFF/rusMono13x13.h>
#include <Fonts/GFXFF/rusMonoBold13x13.h>
#include <Fonts/GFXFF/rusMono17x15.h>
#include <Fonts/GFXFF/rusMonoBold17x15.h>
#include <Fonts/GFXFF/rusSerifBold17.h>
// Additional fonts
#include <Fonts/GFXFF/battery_24x48.h>
#include <Fonts/GFXFF/Picopixel.h>
Архив со шрифтами лежит по аресу viewtopic.php?f=72&t=6388
Для физического подключения тачскрина нужно соединить выводы по следующей схеме:
T_CLK --> SCK (SPI TFT)
T_DIN --> MOSI (SPI TFT)
T_DOUT --> MISO (SPI TFT)
T_CS --> (Задается в настройках файла)
T_IRQ --> (Не задействован)
Управление подсветкой дисплея (контакт LED) нужно подключит к +3,3 или к выводу DAC ESP32 для управления яркостью.
В своих настройках для ESP32 и дисплея с тачскрином ILI9341 в файле User_Setup.h. я раскомментировал строки 188-196 и вписал следующие значения
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 5 // Chip select control pin
#define TFT_DC 21 // Data Command control pin
//#define TFT_RST 4 // Контакт сброса (может подключиться к контакту RST)
#define TFT_RST -1 // Установите TFT_RST в -1, если дисплей RESET подключен к плате ESP32 RST
18.09.2020
Добавил блоки в новой редакции. Попытался максимально адаптировать библиотеку под FLProg. Огромная благодарность автору за эту возможность!
Описание внутри каждого блока. Все необходимые изменения по прежнему в файле User_Setup.h. каталога библиотеки.
По в блоках умолчанию контроллер ESP32 под дисплей ILI9341 с тачскрином.
TFT_eSPI_(Code_-_Professional).ubi
Новый редактор
(2.67 МБ) 584 скачивания
Вложения
ESP32-ILI9341 Statr.flp
Пример. Для калибровки из КОМ порта отправить calibrate
(778.25 КБ) 579 скачиваний
TFT eSPI.ubl
Конструктор из блоков
(1.05 МБ) 520 скачиваний
Последний раз редактировалось DrMario 18.09.2020{, 05:43}, всего редактировалось 2 раза.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Блоки для дисплеев TFT SPI

#81

Сообщение WildCat » 12.02.2024{, 03:33}

brigadir218 писал(а):
12.02.2024{, 03:28}
вот так отображаются картинки.
А как должны?

Выведите проверочную таблицу цветов, чтоб понимать как цвета сдвигаются

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#82

Сообщение brigadir218 » 12.02.2024{, 03:39}

не ну сам экран отображает правильные цвета. это только на картинках такое чудо.

Отправлено спустя 1 минуту 20 секунд:
WildCat писал(а):
12.02.2024{, 03:33}
brigadir218 писал(а):
12.02.2024{, 03:28}
вот так отображаются картинки.
А как должны?

Выведите проверочную таблицу цветов, чтоб понимать как цвета сдвигаются
вы имеете ввиду тестовую загрузку цветов?

Отправлено спустя 12 минут 24 секунды:
проверил, все ок с цветами из примеров.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Блоки для дисплеев TFT SPI

#83

Сообщение WildCat » 12.02.2024{, 04:35}

brigadir218 писал(а):
12.02.2024{, 03:53}
вы имеете ввиду тестовую загрузку цветов?
Нет. Картинку (именно файл картинки) типа такой:

Изображение

Отправлено спустя 4 минуты 6 секунд:
Чем картинку в массив переводите?

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#84

Сообщение brigadir218 » 12.02.2024{, 05:22}

ConvertBMP

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Блоки для дисплеев TFT SPI

#85

Сообщение kulibinsvv » 12.02.2024{, 05:23}

brigadir218, у вас инверсия включена по умолчанию.

Отправлено спустя 8 минут 47 секунд:
Либо при конвертации, либо при выводе на экран.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#86

Сообщение brigadir218 » 12.02.2024{, 05:45}

stdvn5k1.png
stdvn5k1.png (63.86 КБ) 589 просмотров
вот,есть инверсия цветов. и черная полоса - белая.

Отправлено спустя 4 минуты 45 секунд:
Снимок8.PNG

это мои настройки. как есть сейчас

Отправлено спустя 2 минуты 32 секунды:
у вас инверсия включена по умолчанию.

Отправлено спустя 8 минут 47 секунд:
Либо при конвертации, либо при выводе на экран.
[/quote]


Стесняюсь спросить, а где оно включается?

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Блоки для дисплеев TFT SPI

#87

Сообщение WildCat » 12.02.2024{, 06:40}

kulibinsvv писал(а):
12.02.2024{, 05:32}
у вас инверсия включена по умолчанию.
помимо инверсии еще и формат BGR вместо RGB

Это судя по цветовой таблице

Отправлено спустя 3 минуты 57 секунд:
brigadir218 писал(а):
12.02.2024{, 05:52}
Стесняюсь спросить, а где оно включается?
User setup

Скриншот 12-02-2024 064405.jpg

Аватара пользователя
Larisa
Рядовой
Сообщения: 18
Зарегистрирован: 20.07.2023{, 20:59}
Репутация: 0
Имя: Лариса

Блоки для дисплеев TFT SPI

#88

Сообщение Larisa » 12.02.2024{, 06:53}

Доброго утра! По руководству с видео получилось собрать блок для вывода картинок :yes:
1. Картинку загружаем на сайт http://www.rinkydinkelectronics.com/t_i ... ter565.php, конвертируем в с-файл, скачиваем обратно.
2. У скаченного файла меняем расширение .с на .h, открываем его через блокнот и в пятой строке запоминаем размер картинки в пикселах (Image Size : 45x26 pixels), закрываем файл.
3. Этот файл называем к примеру "primer" и перетаскиваем в любую папку, например пусть будет папка "papka"
4. Создаем в FLProg новый блок с языком программирования Code - Basic
5. В DeclareSection пишем имя файла с картинкой #include "primer.h"
6. В LoopSection пишем две строки tft.setSwapBytes(true); и tft.pushImage(3,3,45,26,primer); где первые две цифры - начальная координата по XY, вторые две цифры размер картинки в пикселях из пятой строки скаченного файла, имя файла.
7. Во вкладке Библиотеки указываем папку "papka" с нашим файлом, сохраняем и компилируем :smile225:
В архиве сам блок (немного изменен под мои задачи) и файлы картинок. Дисплей ST7789 320x170.
Может быть сможет кто-нибудь мне помочь в доделке блока? Сама еще плохо разбираюсь :smile37:
Хочется что бы в блоке было конкретное место куда вставлять начальные координаты, размер картинки и имя файла
Вложения
фото1.jpg
2.bmp
2.bmp (1.64 МБ) 579 просмотров
pict.zip
(64.08 КБ) 25 скачиваний

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Блоки для дисплеев TFT SPI

#89

Сообщение WildCat » 12.02.2024{, 07:34}

Larisa писал(а):
12.02.2024{, 06:53}
Хочется что бы в блоке было конкретное место куда вставлять начальные координаты, размер картинки и имя файла

Огонь! ))

Вынести на входы блока координаты и размер картинки?

Нужно добавить в редакторе блока входы, назвать x, y, w, h (не принципиально как, это будут имена переменных).
А в самом коде вместо
tft.pushImage(3,3,45,26,primer);

Написать tft.pushImage(x,y,w,h,primer);

Отправлено спустя 2 минуты 18 секунд:
Только вот батарейка есть во вложенных шрифтах ;)
Шрифт называется battery. И деления от 0 до 9- вводишь цифру, выводит батарейку с пропорциональным количеством делений.
Меньше памяти занимает, чем картинка

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#90

Сообщение brigadir218 » 12.02.2024{, 07:42}

WildCat писал(а):
12.02.2024{, 06:44}
kulibinsvv писал(а):
12.02.2024{, 05:32}
у вас инверсия включена по умолчанию.
помимо инверсии еще и формат BGR вместо RGB



Это судя по цветовой таблице

Отправлено спустя 3 минуты 57 секунд:
brigadir218 писал(а):
12.02.2024{, 05:52}
Стесняюсь спросить, а где оно включается?
User setup


Скриншот 12-02-2024 064405.jpg
переключал эти пункты по очереди и по парно. ноль изменений.

Аватара пользователя
Larisa
Рядовой
Сообщения: 18
Зарегистрирован: 20.07.2023{, 20:59}
Репутация: 0
Имя: Лариса

Блоки для дисплеев TFT SPI

#91

Сообщение Larisa » 12.02.2024{, 07:47}

WildCat писал(а):
12.02.2024{, 07:36}
Larisa писал(а):
12.02.2024{, 06:53}
Хочется что бы в блоке было конкретное место куда вставлять начальные координаты, размер картинки и имя файла

Огонь! ))

Вынести на входы блока координаты и размер картинки?

Нужно добавить в редакторе блока входы, назвать x, y, w, h (не принципиально как, это будут имена переменных).
А в самом коде вместо
tft.pushImage(3,3,45,26,primer);

Написать tft.pushImage(x,y,w,h,primer);

Отправлено спустя 2 минуты 18 секунд:
Только вот батарейка есть во вложенных шрифтах ;)
Шрифт называется battery. И деления от 0 до 9- вводишь цифру, выводит батарейку с пропорциональным количеством делений.
Меньше памяти занимает, чем картинка
А как это добавить в параметры пользователя, а не на входы блока? И имя файла еще)) Про ту батарейку знаю, она не подходит под задачу. На дисплее будут отображаться много параметров шрифт battery для них точно не подойдет.

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#92

Сообщение brigadir218 » 12.02.2024{, 09:33}

Larisa писал(а):
12.02.2024{, 06:53}
1. Картинку загружаем на сайт http://www.rinkydinkelectronics.com/t_i ... ter565.php, конвертируем в с-файл, скачиваем обратно.
2. У скаченного файла меняем расширение .с на .h, открываем его через блокнот и в пятой строке запоминаем размер картинки в пикселах (Image Size : 45x26 pixels), закрываем файл.
3. Этот файл называем к примеру "primer" и перетаскиваем в любую папку, например пусть будет папка "papka"
4. Создаем в FLProg новый блок с языком программирования Code - Basic
5. В DeclareSection пишем имя файла с картинкой #include "primer.h"
6. В LoopSection пишем две строки tft.setSwapBytes(true); и tft.pushImage(3,3,45,26,primer); где первые две цифры - начальная координата по XY, вторые две цифры размер картинки в пикселях из пятой строки скаченного файла, имя файла.
7. Во вкладке Библиотеки указываем папку "papka" с нашим файлом, сохраняем и компилируем
сделал как описали, выдало ошибку.
Снимок9.PNG

Аватара пользователя
Larisa
Рядовой
Сообщения: 18
Зарегистрирован: 20.07.2023{, 20:59}
Репутация: 0
Имя: Лариса

Блоки для дисплеев TFT SPI

#93

Сообщение Larisa » 12.02.2024{, 09:36}

brigadir218 писал(а):
12.02.2024{, 09:33}
сделал как описали, выдало ошибку.
Кажется 5 пункт пропустили, скачайте мой блок

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#94

Сообщение brigadir218 » 12.02.2024{, 11:45}

Larisa писал(а):
12.02.2024{, 09:36}
brigadir218 писал(а):
12.02.2024{, 09:33}
сделал как описали, выдало ошибку.
Кажется 5 пункт пропустили, скачайте мой блок
Все, разобрался. папку с массивом переименовал и думал почему при компиляции ошибка, все просто :shok: , оказывается и в самой папке с массивом тоже название менять надо :yes: , потеря 2-х часов. Ну проблема со цветом не ушла. :helpme:

Отправлено спустя 3 часа 38 минут 58 секунд:
А может быть проблема со цветом на картинки из за того что я не подключил пин 19 на ( MISO )?
Снимок10.PNG

Аватара пользователя
Larisa
Рядовой
Сообщения: 18
Зарегистрирован: 20.07.2023{, 20:59}
Репутация: 0
Имя: Лариса

Блоки для дисплеев TFT SPI

#95

Сообщение Larisa » 12.02.2024{, 17:57}

brigadir218 писал(а):
12.02.2024{, 15:24}
А может быть проблема со цветом на картинки из за того что я не подключил пин 19 на ( MISO )?
Отправлено спустя 6 часов 57 минут 37 секунд:
brigadir218 писал(а):
12.02.2024{, 15:24}
папку с массивом переименовал и думал почему при компиляции ошибка, все просто , оказывается и в самой папке с массивом тоже название менять надо
Название файла должно быть идентичным с именем самого файла в массиве
Вложения
2.bmp
2.bmp (760.75 КБ) 461 просмотр
2.bmp
2.bmp (545.72 КБ) 477 просмотров

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Блоки для дисплеев TFT SPI

#96

Сообщение kulibinsvv » 13.02.2024{, 05:24}

brigadir218 писал(а):
12.02.2024{, 15:24}
А может быть проблема со цветом на картинки из за того что я не подключил пин 19 на ( MISO )?
А может не гадать? А попробовать включить? :yes:
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#97

Сообщение brigadir218 » 13.02.2024{, 07:54}

Да подсоеденил, результатов ноль. Библиотеку TFT eSPI переустановил и arduino IDE снёс и по новой установил, может там что вселилось не чистое ( такое уже бывало ), изменений никаких. Незнаю уже в чем причина. Главное установил GIF скачущий всадник, так на нем цвета меняются без проблем и цвета правильные, а фото ставлю, цвета искажаются. Да и к тому же качество фото немного размытое получается.

Аватара пользователя
Larisa
Рядовой
Сообщения: 18
Зарегистрирован: 20.07.2023{, 20:59}
Репутация: 0
Имя: Лариса

Блоки для дисплеев TFT SPI

#98

Сообщение Larisa » 13.02.2024{, 14:44}

brigadir218 писал(а):
13.02.2024{, 07:54}
Да подсоеденил, результатов ноль. Библиотеку TFT eSPI переустановил и arduino IDE снёс и по новой установил, может там что вселилось не чистое ( такое уже бывало ), изменений никаких. Незнаю уже в чем причина. Главное установил GIF скачущий всадник, так на нем цвета меняются без проблем и цвета правильные, а фото ставлю, цвета искажаются. Да и к тому же качество фото немного размытое получается.
Скиньте сюда фото и скомпилированный файл, интересно посмотреть :smile427: :yes:

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#99

Сообщение brigadir218 » 13.02.2024{, 16:11}

[/quote] Скиньте сюда фото и скомпилированный файл, интересно посмотреть :smile427: :yes:
[/quote]

вот это фото нормальное.
orange.png
orange.png (41.32 КБ) 401 просмотр
а вот что получается, при чем на разных конверторах одно и тоже.
maslenka.jpg
ну и скетч.
poloski.ino
(354 байт) 8 скачиваний

brigadir218
Рядовой
Сообщения: 30
Зарегистрирован: 16.10.2021{, 09:19}
Репутация: 1
Имя: Игорь

Блоки для дисплеев TFT SPI

#100

Сообщение brigadir218 » 14.02.2024{, 09:50}

Урра! :D Взял кирку и лопату и пошел капать в интернете. И случайно нашел маленькую статейку с именно такой проблемой. Там нашел ту строчку без которой и не работали правильно цвета. tft.setSwapBytes(true); Всем спасибо кто принимал участие в разборе проблемы.
вот ссылка на статью.

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»