TFT HX8357

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
serge
Рядовой
Сообщения: 18
Зарегистрирован: 29 мар 2018, 21:09
Имя: Сергей

TFT HX8357

Сообщение serge »

Всем добрый день. Пробую делать блок для работы дисплея 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"

Уважаемые знатоки помогите как побороть это, в программирование не сильно еще силен
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

TFT HX8357

Сообщение edyapd »

В первом варианте вы не стирает надпись, поэтому у вас и идёт наложение при смене IC с false на true, если вы гоняете программу в цикле.
Во втором варианте мерцание будет если вы опять таки гоняете в цикле и постоянно меняете значение 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 раз.
dsfbuy
Сержант
Сообщения: 172
Зарегистрирован: 03 ноя 2018, 12:40
Откуда: Братск
Имя: Виктор

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"
serge
Рядовой
Сообщения: 18
Зарегистрирован: 29 мар 2018, 21:09
Имя: Сергей

TFT HX8357

Сообщение serge »

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
dsfbuy
Сержант
Сообщения: 172
Зарегистрирован: 03 ноя 2018, 12:40
Откуда: Братск
Имя: Виктор

TFT HX8357

Сообщение dsfbuy »

serge писал(а): 01 окт 2019, 12:30 Вариант № 1. Часть кода LoopSection в этом случае надписи накладываются одна на другую
Про мерцание тут ничего нет.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

TFT HX8357

Сообщение edyapd »

serge писал(а): 01 окт 2019, 14:09 Компилятор пишит на
ICOM = !ICOM
was not declared
Так я же написал, что нужно две переменные задекларировать.
Скажем вводите две переменные ICOM и YAESU
serge
Рядовой
Сообщения: 18
Зарегистрирован: 29 мар 2018, 21:09
Имя: Сергей

TFT HX8357

Сообщение serge »

Я потом 'эти две переменные задекларировать. :smile390: , Сейчас компилятор не пропускает 12 строку
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
Что ему не нравится :smile453:
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

TFT HX8357

Сообщение edyapd »

Я в 11 и 14 строках пропустил знак ";" в конце строки.
Я же сразу предупредил, что С не знаю. :smile38:
Отредактировал там код.
serge
Рядовой
Сообщения: 18
Зарегистрирован: 29 мар 2018, 21:09
Имя: Сергей

TFT HX8357

Сообщение serge »

[ref]edyapd[/ref],
В блоке имя переменных и то что мы выводим на экран не должны совпадать по названию, а то на дисплей вместе с названием, в предложенным Вами коде, выводилось куча цифр индификатора, заработал код когда поменял имя переменных...., но мерцание так и не ушло. Сделал по такому алгоритму:
Добавил на вторую надпись еще один вход. FALSE входа №1 затираем надпись №1 и №2, True входа №1 выводим только надпись №1. FALSE входа №2 затираем надпись №1 и №2, TRUE входа №2 выводим надпись №2. Только тогда мерцание букв ушло.
Спасибо за помощь,что подсказали насчет остановки цикла.
kot55
Рядовой
Сообщения: 15
Зарегистрирован: 14 сен 2016, 12:37
Откуда: Мариуполь

TFT HX8357

Сообщение kot55 »

Помогите . У кого есть рабочий блоки для дисплея HX8357
Ответить

Вернуться в «Спросить у знатоков»

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

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