TFT HX8357
TFT HX8357
Всем добрый день. Пробую делать блок для работы дисплея TFT 3,2, библиотека HX 8357, столкнулся с проблемой.
Вариант № 1. Часть кода LoopSection в этом случае надписи накладываются одна на другую
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Вариант №2 в этом случае надписи не накладываются но происходит мерцание букв
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("ICOM",410,280,1); //затираем надпись"ICOM"
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("YAESU",410,280,1); // затираем надпись"YAESU"
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Уважаемые знатоки помогите как побороть это, в программирование не сильно еще силен
Вариант № 1. Часть кода LoopSection в этом случае надписи накладываются одна на другую
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Вариант №2 в этом случае надписи не накладываются но происходит мерцание букв
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("ICOM",410,280,1); //затираем надпись"ICOM"
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("YAESU",410,280,1); // затираем надпись"YAESU"
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Уважаемые знатоки помогите как побороть это, в программирование не сильно еще силен
TFT HX8357
В первом варианте вы не стирает надпись, поэтому у вас и идёт наложение при смене IC с false на true, если вы гоняете программу в цикле.
Во втором варианте мерцание будет если вы опять таки гоняете в цикле и постоянно меняете значение IC с false на true. А так же стоит проверять какая надпись выведена на данный момент и не вызывать процедуру стирания и вывода надписи лишний раз.
Скажем вводите две переменные ICOM и YAESU
Я не знаток С, так что возможно что где-то допустил ошибки.
Во втором варианте мерцание будет если вы опять таки гоняете в цикле и постоянно меняете значение IC с false на true. А так же стоит проверять какая надпись выведена на данный момент и не вызывать процедуру стирания и вывода надписи лишний раз.
Скажем вводите две переменные ICOM и YAESU
Код: Выделить всё
if ( !IC && ICOM) { //если на входе блока false
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("ICOM",410,280,1); //затираем надпись"ICOM"
ICOM = !ICOM;
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
YAESU =!YAESU;
if ( IC && YAESU) { //если на входе блока true
tft.setTextColor(TFT_GREY60); // выбор цвет шрифта "серый " как цвет заливки экрана
tft.drawCentreString("YAESU",410,280,1); // затираем надпись"YAESU"
YAESU = !YAESU;
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
ICOM = !ICOM;
Последний раз редактировалось edyapd 01 окт 2019, 18:55, всего редактировалось 1 раз.
TFT HX8357
Попробуйте так:
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
TFT HX8357
dsfbuy-
Попробуйте так:
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Пробовал раньше так как Вы предложили мерцание остается
Отправлено спустя 53 секунды:
[ref]edyapd[/ref],
Компилятор ругается где то ошибка.
Отправлено спустя 14 минут 37 секунд:
[ref]edyapd[/ref],
Компилятор пишит на
ICOM = !ICOM
was not declared
Попробуйте так:
if ( IC==false) { //если на входе блока false
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("YAESU",410,280,1);} // выводим надпись"YAESU"
if ( IC==true) { //если на входе блока true
tft.setTextColor(TFT_RED, TFT_GREY60); // выбор цвет шрифта "красный", цвет фона "серый"
tft.drawCentreString("ICOM",410,280,1);} // выводим надпись"ICOM"
Пробовал раньше так как Вы предложили мерцание остается
Отправлено спустя 53 секунды:
[ref]edyapd[/ref],
Компилятор ругается где то ошибка.
Отправлено спустя 14 минут 37 секунд:
[ref]edyapd[/ref],
Компилятор пишит на
ICOM = !ICOM
was not declared
TFT HX8357
Про мерцание тут ничего нет.serge писал(а): 01 окт 2019, 12:30 Вариант № 1. Часть кода LoopSection в этом случае надписи накладываются одна на другую
TFT HX8357
Так я же написал, что нужно две переменные задекларировать.
Скажем вводите две переменные ICOM и YAESU
TFT HX8357
Я потом 'эти две переменные задекларировать.
, Сейчас компилятор не пропускает 12 строку
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
Что ему не нравится

tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
Что ему не нравится

TFT HX8357
Я в 11 и 14 строках пропустил знак ";" в конце строки.
Я же сразу предупредил, что С не знаю.
Отредактировал там код.
Я же сразу предупредил, что С не знаю.

Отредактировал там код.
TFT HX8357
[ref]edyapd[/ref],
В блоке имя переменных и то что мы выводим на экран не должны совпадать по названию, а то на дисплей вместе с названием, в предложенным Вами коде, выводилось куча цифр индификатора, заработал код когда поменял имя переменных...., но мерцание так и не ушло. Сделал по такому алгоритму:
Добавил на вторую надпись еще один вход. FALSE входа №1 затираем надпись №1 и №2, True входа №1 выводим только надпись №1. FALSE входа №2 затираем надпись №1 и №2, TRUE входа №2 выводим надпись №2. Только тогда мерцание букв ушло.
Спасибо за помощь,что подсказали насчет остановки цикла.
В блоке имя переменных и то что мы выводим на экран не должны совпадать по названию, а то на дисплей вместе с названием, в предложенным Вами коде, выводилось куча цифр индификатора, заработал код когда поменял имя переменных...., но мерцание так и не ушло. Сделал по такому алгоритму:
Добавил на вторую надпись еще один вход. FALSE входа №1 затираем надпись №1 и №2, True входа №1 выводим только надпись №1. FALSE входа №2 затираем надпись №1 и №2, TRUE входа №2 выводим надпись №2. Только тогда мерцание букв ушло.
Спасибо за помощь,что подсказали насчет остановки цикла.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей