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

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

240х240. Мне получилось создать блок. Но ника не получается избавиться от лишних циферок после необходимого текста!
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Есть возможность поделиться блоком? Всмысле , есть возможность в сообщении , я бы свой блок загрузил на сервер ,вы бы сами посмотрели.
Последний раз редактировалось Boggard 28 янв 2026, 18:58, всего редактировалось 1 раз.
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Изображение Изображение Изображение Изображение
"
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ######

// For ESP32 Dev board (only tested with ST7789V display from Waveshare)
// The hardware SPI can be mapped to any pins

// YOU MUST PLUG THE VCC to 3v3 and GND to GND on your board.

#define TFT_MOSI 23 // (DIN)
#define TFT_SCLK 18 // (CLK)
#define TFT_CS -1 // (CS) Chip select control pin
#define TFT_DC 16 // (DC) Data Command control pin
#define TFT_RST 4 // (RST) Reset pin (could connect to RST pin)
#define TFT_BL 32 // (BL) LED back-light
"

Код: Выделить всё

#include <TFT_eSPI.h>
bool EN_179945602_1;
String print_179945602_1;
int SIZE_179945602_1;
byte X_179945602_1;
byte Y_179945602_1;
byte Rotation_179945602_1;
TFT_eSPI tft_179945602_1= TFT_eSPI();
void setup()
{
        tft_179945602_1.init(); // инициализация дисплея
}
void loop()
{
    //Плата:1
    EN_179945602_1 = !(0);
    print_179945602_1 = String("Text  получилось  poluchilos !");
    SIZE_179945602_1 = 3;
    X_179945602_1 = 5;
    Y_179945602_1 = 5;
    Rotation_179945602_1 = 0;
    if(EN_179945602_1) 
    {
            tft_179945602_1.setRotation(Rotation_179945602_1); // вращение на 180 градусов
            tft_179945602_1.fillScreen(TFT_BLACK); // заливка фона чёрным цветом
            tft_179945602_1.setCursor(X_179945602_1, Y_179945602_1); // x, y координаты текста
            tft_179945602_1.setTextColor(TFT_YELLOW); // цвет текста — белый
            tft_179945602_1.setTextSize(SIZE_179945602_1); // размер текста — №2 (7×2 = 14 точек)
            tft_179945602_1.print("print_179945602_1"); // вывод текста
           delay(100);
    }
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Куда скрины можно загрузить? Что -то и это на прокатило. В общем получаю на дисплее "print_179945602_1" , вот такую строку , без кавычек. Еще очень нужно вывести цифры со счетчика , и что бы дисплей менялся при изменении цифры , а то моргает. За ранее большое спасибо!!!!
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Переменная вроде бы правильная. print_179945602_1 = String
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Крутил вертел и дошло!!! Кавычки то лишние были! Это какой то пример из сетки , по моему с ГитХаба , вывод строки. , из сетки , взял его за основу. Сразу не сообразил. Но справился!
А вот от мигания , не знаю даже ,что думать .как избавиться? И как сделать , что бы по изменению цифры , со счетчика , цифра менялась.. Я еще конечно не попробовал ,сейчас прикручу счетчик и посмотрю , получиться или нет. Но вот мигание доставляет ,конечно! Как допилю , выложу на основной сайт , уже 100% рабочий и проверенный блок , а не то что там валяется, (кусок говна старого носорогв) не работающий! Кстати говоря , сначала как-то , мне не понятно как, но от лишних знаков , я избавился. Как это получилось , для меня загадка! А вот это дерьмо не работает от слова совсем!!! https://flprog.ru/user_projects/other_p ... s-st-7789/
получился очень компактный на одной библиотеке блок (скетч) То чего ,Я и добивался. В С++ , полный ноль , но ума на троих. :smile38:

Код: Выделить всё

#include <TFT_eSPI.h>
bool EN_93232916_1;
String Text_93232916_1;
int SIZE_93232916_1;
byte X_93232916_1;
byte Y_93232916_1;
byte Rotation_93232916_1;
TFT_eSPI tft_93232916_1= TFT_eSPI();
void setup()
{
        tft_93232916_1.init(); // инициализация дисплея
}
void loop()
{
    //Плата:1
    EN_93232916_1 = !(0);
    Text_93232916_1 = String(" Pluchilos");
    SIZE_93232916_1 = 3;
    X_93232916_1 = 5;
    Y_93232916_1 = 5;
    Rotation_93232916_1 = 0;
    if(EN_93232916_1) 
    {
            tft_93232916_1.setRotation(Rotation_93232916_1); // вращение на 180 градусов
            tft_93232916_1.fillScreen(TFT_BLACK); // заливка фона чёрным цветом
            tft_93232916_1.setCursor(X_93232916_1, Y_93232916_1); // x, y координаты текста
            tft_93232916_1.setTextColor(TFT_YELLOW); // цвет текста — белый
            tft_93232916_1.setTextSize(SIZE_93232916_1); // размер текста — №2 (7×2 = 14 точек)
            tft_93232916_1.print(Text_93232916_1); // вывод текста
           delay(100);
    }
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
ecoins
Администратор
Сообщения: 4486
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 224 раза
Поблагодарили: 368 раз

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

Сообщение ecoins »

Boggard писал(а): 28 янв 2026, 18:41 240х240. Мне получилось создать блок. Но ника не получается избавиться от лишних циферок после необходимого текста!
Сегодня тестировал на RP2040 ST7789 170x320.
ST7789_19_170x320.jpeg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

:smile9:
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

ecoins писал(а): 28 янв 2026, 20:59
Boggard писал(а): 28 янв 2026, 18:41 240х240. Мне получилось создать блок. Но ника не получается избавиться от лишних циферок после необходимого текста!
Сегодня тестировал на RP2040 ST7789 170x320.
ST7789_19_170x320.jpeg
А библиотеками не поделитесь ,для этого дисплея? :smile469:
Ну и не отказался бы от этого блока. :yes:
Да кстати попробуйте этот блок на esp32 посмотрим получится или нет? :smile38:
ecoins
Администратор
Сообщения: 4486
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 224 раза
Поблагодарили: 368 раз

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

Сообщение ecoins »

Boggard писал(а): 29 янв 2026, 10:21
ecoins писал(а): 28 янв 2026, 20:59
Boggard писал(а): 28 янв 2026, 18:41 240х240. Мне получилось создать блок. Но ника не получается избавиться от лишних циферок после необходимого текста!
Сегодня тестировал на RP2040 ST7789 170x320.
ST7789_19_170x320.jpeg
А библиотеками не поделитесь ,для этого дисплея? :smile469:
Ну и не отказался бы от этого блока. :yes:
Да кстати попробуйте этот блок на esp32 посмотрим получится или нет? :smile38:
Ждите новую версию FLProg - авторизуйтесь и пробуйте. Так и библиотека в открытом доступе, и графический редактор FLProg.
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

Почти все получилось , только вот ,с миганием может кто допилить? Вы на опыте , миллиард строк уже написали. Помогите пожалуйста с кодом. и решением , для ФлПрог? Осталось совсем чуток. Мигает раз в секунду , это по изменению генератора (вместо него будет дифракционный датчик) , Хотя.. Если будет мигать не раз в минуту ,а по сигналу , то пускай мигает. Для меня "пока" это сложновато. спасибо большое за ранее!

Код: Выделить всё

#include <TFT_eSPI.h>
bool EN_156646886_2;
String Text_156646886_2;
int SIZE_156646886_2;
byte X_156646886_2;
byte Y_156646886_2;
byte Rotation_156646886_2;
TFT_eSPI tft_156646886_2= TFT_eSPI();
bool _count2I = 0;
int _count2_Value = 0;
bool _gen2I = 0;
bool _gen2O = 0;
unsigned long _gen2P = 0UL;
void setup()
{
        tft_156646886_2.init(); // инициализация дисплея
}
void loop()
{
    //Плата:1
    if (!(0)) 
    {
         if (! _gen2I) 
        {
            _gen2I = 1;
            _gen2O = 1;
            _gen2P = millis();
        }
    }
     else 
    {
        _gen2I = 0 ;
        _gen2O= 0;
    }
    if (_gen2I) 
    {
          if (_isTimer (_gen2P , 500)) 
        {
             _gen2P = millis();
            _gen2O = ! _gen2O;
        }
    }
    if (!(_gen2O))
    {
        if (! _count2I) 
        {
            _count2I = 1;
            _count2_Value = _count2_Value + 1;
        }
    }
     else 
    {
        _count2I = 0;
    }
    EN_156646886_2 = !(0);
    Text_156646886_2 = (String((_count2_Value)+(0), DEC));
    SIZE_156646886_2 = 3;
    X_156646886_2 = 5;
    Y_156646886_2 = 5;
    Rotation_156646886_2 = 0;
    if(EN_156646886_2) 
    {
            tft_156646886_2.setRotation(Rotation_156646886_2); // вращение на 180 градусов
            tft_156646886_2.fillScreen(TFT_BLACK); // заливка фона чёрным цветом
            tft_156646886_2.setCursor(X_156646886_2, Y_156646886_2); // x, y координаты текста
            tft_156646886_2.setTextColor(TFT_YELLOW); // цвет текста — белый
            tft_156646886_2.setTextSize(SIZE_156646886_2); // размер текста — №2 (7×2 = 14 точек)
            tft_156646886_2.print(Text_156646886_2); // вывод текста
          delay(1000);
    }
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
AndreyR
Рядовой
Сообщения: 13
Зарегистрирован: 04 фев 2022, 20:05
Имя: Андрей
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение AndreyR »

Скинь проект посмотреть
Boggard
Рядовой
Сообщения: 76
Зарегистрирован: 23 дек 2020, 01:10
Имя: Андрей
Благодарил (а): 22 раза
Поблагодарили: 2 раза

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

Сообщение Boggard »

В десятый или какой раз... Не ,я с удовольствием залью блок. Спасибо за ранее , добрый человек! AndreyR . Не получается ,загрузить -ошибка. По ходу у моего провайдера траблы (МТС) :smile390:
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

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

Сообщение Phazz »

tft_156646886_2.fillScreen(TFT_BLACK) это дает мерцание
CraCk
Капитан
Сообщения: 732
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 32 раза
Поблагодарили: 11 раз

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

Сообщение CraCk »

ecoins писал(а): 28 янв 2026, 20:59 Сегодня тестировал на RP2040 ST7789 170x320.
ST7789_19_170x320.jpeg
Будет возможность конвертировать текст в QR код, для отображения на экране?
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей