TFT HX8357

вывод информации

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

TFT HX8357

#1

Сообщение serge » 01.10.2019{, 12:30}

Всем добрый день. Пробую делать блок для работы дисплея 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.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

TFT HX8357

#2

Сообщение edyapd » 01.10.2019{, 13:07}

В первом варианте вы не стирает надпись, поэтому у вас и идёт наложение при смене 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.10.2019{, 18:55}, всего редактировалось 1 раз.

dsfbuy
Сержант
Сообщения: 171
Зарегистрирован: 03.11.2018{, 12:40}
Репутация: 21
Откуда: Братск
Имя: Виктор

TFT HX8357

#3

Сообщение dsfbuy » 01.10.2019{, 13:27}

Попробуйте так:
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.03.2018{, 21:09}
Репутация: 1
Имя: Сергей

TFT HX8357

#4

Сообщение serge » 01.10.2019{, 13:53}

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 секунды:
edyapd,
Компилятор ругается где то ошибка.

Отправлено спустя 14 минут 37 секунд:
edyapd,
Компилятор пишит на
ICOM = !ICOM
was not declared

dsfbuy
Сержант
Сообщения: 171
Зарегистрирован: 03.11.2018{, 12:40}
Репутация: 21
Откуда: Братск
Имя: Виктор

TFT HX8357

#5

Сообщение dsfbuy » 01.10.2019{, 14:37}

serge писал(а):
01.10.2019{, 12:30}
Вариант № 1. Часть кода LoopSection в этом случае надписи накладываются одна на другую
Про мерцание тут ничего нет.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

TFT HX8357

#6

Сообщение edyapd » 01.10.2019{, 16:26}

serge писал(а):
01.10.2019{, 14:09}
Компилятор пишит на
ICOM = !ICOM
was not declared
Так я же написал, что нужно две переменные задекларировать.
Скажем вводите две переменные ICOM и YAESU

serge
Рядовой
Сообщения: 18
Зарегистрирован: 29.03.2018{, 21:09}
Репутация: 1
Имя: Сергей

TFT HX8357

#7

Сообщение serge » 01.10.2019{, 18:17}

Я потом 'эти две переменные задекларировать. :smile390: , Сейчас компилятор не пропускает 12 строку
tft.setTextColor(TFT_RED); // выбор цвет шрифта "красный"
Что ему не нравится :smile453:

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

TFT HX8357

#8

Сообщение edyapd » 01.10.2019{, 18:54}

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

serge
Рядовой
Сообщения: 18
Зарегистрирован: 29.03.2018{, 21:09}
Репутация: 1
Имя: Сергей

TFT HX8357

#9

Сообщение serge » 02.10.2019{, 10:19}

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

kot55
Рядовой
Сообщения: 15
Зарегистрирован: 14.09.2016{, 12:37}
Репутация: 0
Откуда: Мариуполь

TFT HX8357

#10

Сообщение kot55 » 04.02.2020{, 00:13}

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

Ответить

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