Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

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

Блоки для дисплеев 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 МБ) 126 скачиваний
Вложения
ESP32-ILI9341 Statr.flp
Пример. Для калибровки из КОМ порта отправить calibrate
(778.25 КБ) 188 скачиваний
TFT eSPI.ubl
Конструктор из блоков
(1.05 МБ) 175 скачиваний
Последний раз редактировалось DrMario 18.09.2020{, 05:43}, всего редактировалось 2 раза.

ROSKA63
Рядовой
Сообщения: 21
Зарегистрирован: 24.11.2018{, 23:04}
Репутация: 0
Имя: Роман

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

#2

Сообщение ROSKA63 » 19.07.2020{, 15:07}

Доброго времени суток уважаемый DrMario, примите огромную благодарность, от чайника в программировании, за ваш труд. Потому, как эта тема для меня особенно актуальна, а на просторах ин-нета более подробной и доходчивой информации я не нашел. Но не смотря на это у меня как то не удается их (ESP32 и ST7735 1,8"(практикуюсь пока на том, что есть и жду ILI9341 2,8")) уговорить сотрудничать. Если я правильно понял, то файл User_Setup.h. находится по пути C:\Program Files (x86)\FLProg\ideV5\portable\sketchbook\libraries\TFT_eSPI-master.
И в нем нужно раскомментировать только те строки которые относятся к ESP32 и ST7735. Я правильно понимаю :smile37:
P.S. На arduino я его(ST7735) запускал, с этим блоком, но arduino мне не хватает, да и в той теме не достаточно информации для подключения к ESP32.

Аватара пользователя
DrMario
Сержант
Сообщения: 238
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 26
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

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

#3

Сообщение DrMario » 20.07.2020{, 10:49}

ROSKA63 писал(а):
19.07.2020{, 15:07}
Если я правильно понял, то файл User_Setup.h. находится по пути C:\Program Files (x86)\FLProg\ideV5\portable\sketchbook\libraries\TFT_eSPI-master.
Все верно. С дисплеем на ST7735 мне не доводилось еще работать.
В файле User_Setup.h написано, что Для платы разработки ESP32 (тестируется только с дисплеем ILI9341).

Для ESP32 попробуйте сделать такие настройки (строки 188-196), на ILI9341 все работало.
#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

#define TOUCH_CS 4 // Фишка выбора чипа (T_CS) сенсорного экрана

ROSKA63
Рядовой
Сообщения: 21
Зарегистрирован: 24.11.2018{, 23:04}
Репутация: 0
Имя: Роман

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

#4

Сообщение ROSKA63 » 17.08.2020{, 13:50}

Доброго времени суток DrMario, с ST7735 у меня так ни чего и не получилось. Пришел дисплей на ILI9341 и все заработало! Но есть вопрос: в вашем арсенале блоков пользователя есть блок который может менять шрифт для всего экрана, а можно ли как то менять размер шрифта разных элементов? :smile37: так вся площадь экрана может быть использована более эффективно. Есть ли такая возможность? Подскажите пожалуйста.

Аватара пользователя
DrMario
Сержант
Сообщения: 238
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 26
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

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

#5

Сообщение DrMario » 18.09.2020{, 05:45}

В первом сообщении добавил блоки новой редакции.

shura2
Рядовой
Сообщения: 40
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

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

#6

Сообщение shura2 » 03.10.2020{, 01:39}

Подскажите, а где прописывать пины для тачскрина. в настройках библиотеки tft-espi не нашел.

У меня ругается 'class TFT_eSPI' has no member named 'setTouch'. что это может быть, если примеры из библиотеки запускаются?
СпойлерПоказать
Arduino: 1.8.11 (Windows 7), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

C:\Users\User\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void setup()':

pr2:96:17: error: 'class TFT_eSPI' has no member named 'setTouch'

tft.setTouch(calData);

^

C:\Users\User\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void loop()':

pr2:180:13: error: 'class TFT_eSPI' has no member named 'calibrateTouch'

tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);

^

pr2:260:24: error: 'class TFT_eSPI' has no member named 'getTouch'

pressed = tft.getTouch(&t_x, &t_y); // Нажатие будет установлено в true, если на экране есть действительное касание

^

pr2:511:39: error: 'rusMono13x13' was not declared in this scope

case 49: tft.setFreeFont(&rusMono13x13);

^

pr2:514:39: error: 'rusMonoBold13x13' was not declared in this scope

case 50: tft.setFreeFont(&rusMonoBold13x13);

^

pr2:517:39: error: 'rusMono17x15' was not declared in this scope

case 51: tft.setFreeFont(&rusMono17x15);

^

pr2:520:39: error: 'rusMonoBold17x15' was not declared in this scope

case 52: tft.setFreeFont(&rusMonoBold17x15);

^

pr2:523:39: error: 'rusSerifBold17' was not declared in this scope

case 53: tft.setFreeFont(&rusSerifBold17);

^

pr2:526:39: error: 'battery_24x48' was not declared in this scope

case 54: tft.setFreeFont(&battery_24x48);

^

pr2:529:39: error: 'Picopixel' was not declared in this scope

case 55: tft.setFreeFont(&Picopixel);

^

Multiple libraries were found for "TFT_eSPI.h"
Used: c:\Users\User\Downloads\PortableFLProg_7-0-4_Win64\ideV5\libraries\TFT_eSPI
Not used: c:\Users\User\Downloads\PortableFLProg_7-0-4_Win64\ideV5\portable\sketchbook\libraries\TFT_eSPI-master
exit status 1
'class TFT_eSPI' has no member named 'setTouch'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

shura2
Рядовой
Сообщения: 40
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

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

#7

Сообщение shura2 » 04.10.2020{, 02:48}

Запустил эту библиотеку на ili9488 c тачскрином. почему то с файлом конфигурации User_Setup.h компилироваться отказывался, заработало с цепочкой User_Setup_Select.h и Setup21_ILI9488.h и только прописав в последнем строку #define TOUCH_CS 4 // Фишка выбора чипа (T_CS) сенсорного экрана.

При этом тачскрин не заработал. перечитывание первого поста и соединение проводов по этой схеме:
T_CLK --> SCK (SPI TFT)
T_DIN --> MOSI (SPI TFT)
T_DOUT --> MISO (SPI TFT)
T_CS --> (Задается в настройках файла)
T_IRQ --> (Не задействован)
не помогло.


Нашел такой вариант подключения:
wiring_ILI9488_esp32.png
После чего всё заработало.

rogerwaters
Рядовой
Сообщения: 33
Зарегистрирован: 17.05.2019{, 18:38}
Репутация: 2
Имя: Александр

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

#8

Сообщение rogerwaters » 06.10.2020{, 13:05}

:smile37: Никак не могу запустить комбинацию ILI934 и ESP32.Второй день пробую и так и сяк, но даже пример из TFT_eSPI не запускается. С другими блоками и библиотеками проблем нет.
:(

Отправлено спустя 2 часа 43 минуты 59 секунд:
:smile427: Нашел решение проблемы: нужно открыть ардуино иде ,нажать на файл, настройки и в строке "размещение папки скетчей" указать точный путь к библитеке в которой находится папка TFT_eSPI с ком.- раском.файлом User_Setup.h. Проблема может воникнуть если у вас установлены стационарная и портативная версии FlProg. Тогда ардуино иде может находить несколько библиотек и отдать предпочтение неверной.

rogerwaters
Рядовой
Сообщения: 33
Зарегистрирован: 17.05.2019{, 18:38}
Репутация: 2
Имя: Александр

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

#9

Сообщение rogerwaters » 07.10.2020{, 17:16}

:smile37: Не могу понять есть ли функция автоматического затирания при выводе переменной на дисплей, например показаний часов реального времени или температуры?

us5nbq
Рядовой
Сообщения: 12
Зарегистрирован: 28.02.2019{, 20:29}
Репутация: 2
Имя: Александр

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

#10

Сообщение us5nbq » 08.02.2021{, 23:13}

Ура,завелся дисплей который не заводился...еще бы блоки вывода картинки.....вобще было бы шикарно......

ecoins
Капитан
Сообщения: 947
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 155
Откуда: Шатура
Имя: Энвер

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

#11

Сообщение ecoins » 01.03.2021{, 00:37}

Вопросы разработчику:
Разбираюсь с TFT-дисплеями, посмотрел Ваши блоки и тоже пока остановился на библиотеке TFT__eSPI.h.
Разобрался с блоками - в целом понравились.
О проблемах. Так получается, что после настройки файла User_Setup_Select.h библиотека настроена только на один тип дисплея.
Использовать одновременно два разных дисплея проблематично.
Пробовал вынести файлы инициализации из библиотеки и настраивать вызов нужной из FLProg - пока не получилось.
Есть у меня кое-какие идеи, но получается сложно и много переделывать в основной библиотеке.
Может у кого есть идеи для преодоления проблемы одновременного применения дисплеев разных типов?

Аватара пользователя
DrMario
Сержант
Сообщения: 238
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 26
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

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

#12

Сообщение DrMario » 01.03.2021{, 07:23}

ecoins писал(а):
01.03.2021{, 00:37}
О проблемах. Так получается, что после настройки файла User_Setup_Select.h библиотека настроена только на один тип дисплея.
Использовать одновременно два разных дисплея проблематично.
Для этого нужно переделывать исходную библиотеку, а из меня программист не важный

Ответить

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