Панель Nextion

Использование дисплеев и обсуждение пользовательских блоков к ним
igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#181

Сообщение igee » 10.03.2017{, 11:00}

Зачем он тогда уточняет про "два знака после"? Хм.
А количество знаков для конечного поля - ограничить можно, но вводим то мы изначально в поле, которое не имеет ограничений - и в результате можем получить обрубок, который нас не устроит.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

Панель Nextion

#182

Сообщение Олег » 10.03.2017{, 11:18}

Потому что в Nextion нет float, сравнивать можно только целые числа. А ему надо если <100.08 то так, а если >100.08, то этак.
igee писал(а):ограничить можно, но вводим то мы изначально в поле, которое не имеет ограничений - и в результате можем получить обрубок, который нас не устроит.
Видно мы реализуем по разному, у меня ограничение в поле ввода.
Последний раз редактировалось Олег 10.03.2017{, 11:22}, всего редактировалось 1 раз.

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#183

Сообщение igee » 10.03.2017{, 13:11}

Вот пример моей реализации нумпада. Правда переходами у меня командует ардуина, но в остальном то же самое. Я задаю количество вводимых знакомест в кнопке по которой перехожу к нумпаду. У меня не вводятся лишние точки и нули, обрезаются лишние нули после запятой, добавляется ноль, если первый символ точка.

Потому что в Nextion нет float, сравнивать можно только целые числа. А ему надо если <100.08 то так, а если >100.08, то этак.
Сравнивать дробное на стороне Nextion -  опять же, следи за точкой, убирай ее и все знаки после второго  после точки, конвертируй и сравнивай.. но я бы так наверное не стал делать).
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось igee 10.03.2017{, 13:12}, всего редактировалось 1 раз.

Makenz[c
Рядовой
Сообщения: 7
Зарегистрирован: 23.03.2016{, 18:30}
Репутация: 0

Панель Nextion

#184

Сообщение Makenz[c » 10.03.2017{, 14:26}

Да Олег,мне просто надо ограничить максимальное вводимое значение float.
С двумя знаками после запятой. Запятую двигать не нужно. Например 30.65  А максимум который можно ввести 100.00  Вот только с Си я совсем не дружу. Мне бы пример готовый.
Последний раз редактировалось Makenz[c 10.03.2017{, 15:10}, всего редактировалось 1 раз.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

Панель Nextion

#185

Сообщение Олег » 10.03.2017{, 15:37}

Параметр только один надо так установить, или так много параметров задается?

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#186

Сообщение igee » 10.03.2017{, 17:03}

Вот вам тот же пример, что выше, только с вашими пожеланиями. Ограничение по количеству символов после точки либо одно на весь проект задаете в переменной fract_lim на экране нумпада, либо привязываете к каждой кнопке( как в примере.) В переменной Numpad.chrs - задаете ограничение на количество вводимых символов. (в примере 6, т.к "100,00"). Аналогично либо на весь проект, либо привязка к кнопке. И обрезка по максимальному значению уже при возврате на экран с которого вызывали нумпад. Если значение больше 100, в текстовом поле будет 100, если меньше 100, то то значение, что ввели на нумпаде.

Добавлено (10.03.2017, 17:03)
---------------------------------------------
Я видел там был вариант расплаты "вскопать огород"! Так не честно! Куда убрали?
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось igee 10.03.2017{, 17:04}, всего редактировалось 1 раз.

Makenz[c
Рядовой
Сообщения: 7
Зарегистрирован: 23.03.2016{, 18:30}
Репутация: 0

Панель Nextion

#187

Сообщение Makenz[c » 11.03.2017{, 15:28}

Ребята спасибо,примеры что надо!
Igee,Олег отписался вам в личку.
Последний раз редактировалось Makenz[c 11.03.2017{, 16:04}, всего редактировалось 1 раз.

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#188

Сообщение igee » 16.03.2017{, 11:17}

Хотел бы продолжить тему архитектуры мастер-слейв между дисплеем и ардуиной.
Пару слов о программе. Ардуина принимает показания датчика и при изменении значения - оправляет команду дисплею(использую родную библиотеку ) изменить текстовое поле.
При этом на экране присутствуют еще кнопки, которые при нажатии отправляют в ком порт свой ID(стандратная схема работы кнопок в библиотеке некстион), и который ардуина должна принимать и понимать что кнопка нажата.

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

Отсюда вопрос: как правильно реализовать схему взаимодействия экрана и ардуины?
Я пока что вижу одно решение: Убрать отсылку ID кнопок (и пр.) со стороны дисплея в ком порт. Вместо этого все нажатия фиксировать в самом экране (состоянием переменных или свойствами объектов), а ардуиной циклически эти параметры опрашивать и реагировать на их изменение уже по факту. На подсознании такая схема мне не очень нравится.

Может у кого есть еще какие мысли?

РЕШЕНО В ПОСТЕ 194
Последний раз редактировалось igee 20.03.2017{, 22:30}, всего редактировалось 1 раз.

DenisR
Рядовой
Сообщения: 11
Зарегистрирован: 30.11.2015{, 10:39}
Репутация: 0
Откуда: Магнитогорск

Панель Nextion

#189

Сообщение DenisR » 19.03.2017{, 09:58}

Здравствуйте коллеги!!!
Вопрос такой сделал проект на Nextion панели и в Flproge . На панели есть две кнопки одна должна зажигать светодиод на 13 ножке что она и делает , а другой элемент это рисунок с вентилятором ( при нажатии на вентилятор он на экране вращается) как сделать чтобы он включался по условию в ардуино допустим температура достигла сколько то градусов он включился . И хотелось бы чтобы на экране на него (вентилятор) нажал и панель кинула в ардуину 1 или 0. Блоки все прилагаю. Хотелось бы увидеть примеры . Заранее спасибо.
Для скачивания вложений Вы должны быть зарегистрированы.

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#190

Сообщение igee » 19.03.2017{, 11:08}

1. Если вы хотите реализовывать задумку предоставленными FLProg блоками, то вам в первую очередь нужно ознакомиться со справкой по работе с блоками Nextion. Там вы найдете описание подготовительных процедур для отслеживания нажатий. 
2. Чтобы вентилятор работал как кнопка, вы должны отследить нажатие на него и убрать из дисплея реакцию на нажатие. Дисплей должен только отображать состояние дел в контроллере. Зачем вам видеть вращающийся вентилятор, когда он на самом деле выключен?
3. У вас 2 условия на включение вентилятора: это превышение температуры и нажатие на иконку. Соответственно реализовываем каждое условие и заводим на блок "ИЛИ".

Примеры не проверялись.
Для скачивания вложений Вы должны быть зарегистрированы.

DenisR
Рядовой
Сообщения: 11
Зарегистрирован: 30.11.2015{, 10:39}
Репутация: 0
Откуда: Магнитогорск

Панель Nextion

#191

Сообщение DenisR » 19.03.2017{, 12:43}

igee спасибо большое что ответили я проверил, но Nextion Editor При компиляции выдает ошибку
Global Memory:31
Page:page0 Memory Occupied:31+30=61
Error: Invalid Variables:fan_press( Double click to jump to code)
Error: Invalid Variables:fan_release( Double click to jump to code)
Compile Successful! 2 Errors, 0 Warnings,File Size:181 946
 
Помогите что не так???

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#192

Сообщение igee » 19.03.2017{, 14:27}

а, ну да,  .val   допишите после переменных. Все время забываю. У каждого объекта в редакторе есть набор свойств и надо всегда указывать какому именно свойству объекта мы хотим присвоить значение: .val .pic .bco и т.д.

DenisR
Рядовой
Сообщения: 11
Зарегистрирован: 30.11.2015{, 10:39}
Репутация: 0
Откуда: Магнитогорск

Панель Nextion

#193

Сообщение DenisR » 19.03.2017{, 17:18}

igee Спасибо  все получилось!!!

igee
Рядовой
Сообщения: 57
Зарегистрирован: 08.06.2016{, 09:15}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#194

Сообщение igee » 20.03.2017{, 22:29}

АЛЯРМА!
Кто пользуется библиотекой от ITEAD для ардуино. Там косяк. И не один. Вообще надо это где то большими буквами писать по хорошему. Все ниже сказанное верно для версии библиотеки 0.9.0.
Итак:
1. Дабы сэкономить место при компиляции удалите из папки с библиотекой файлы: NexUpload.h и NexUpload.cpp - 99% что они вам не понадобятся. Это уменьшит объем библиотеки при компиляции на 70%.
2. Чтобы нажатия кнопок на дисплее не терялись (то есть нажимаем - а реакции нет) в случае когда на дисплей отправляются постоянно изменяющиеся данные(индикация показаний датчика например) делаем следующее:

а) в файле NexHardware.h находим строку

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

bool recvRetCommandFinished(uint32_t timeout = 100);
и меняем 100 на 0.

б) В файле NexHardware.cpp находим строку:

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

sendCommand("bkcmd=1");
и делаем bkcmd=0

в) В том же NexHardware.cpp находим

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

while (nexSerial.available())
    {
        nexSerial.read();
    }
и закомментируем. Непонятно для чего они чистят входящий буфер, когда у нас там нажатие на кнопку прилететь может.

г) Ну и последнее, но далеко не самое маловажное, после того, как мы обнулили таймаут в пункте (а) , кроме нас самих больше некому следить за тем с какой частотой будет отправляться команда на изменение значения текстового поля, или номера или чего бы то ни было. Поэтому ставьте фильтр с какой частотой слать команду в дисплей. Иначе забьете порт и получите висяк в лучшем случае.

PS: это решение проблемы из поста 188.
Последний раз редактировалось igee 20.03.2017{, 22:32}, всего редактировалось 1 раз.

igrik1972
Рядовой
Сообщения: 75
Зарегистрирован: 08.02.2017{, 00:29}
Репутация: 1

Панель Nextion

#195

Сообщение igrik1972 » 04.04.2017{, 23:06}

а как сделать так чтоб на странице первой в зависимости от времени года менялась основная картинка .....

Refugee
Рядовой
Сообщения: 5
Зарегистрирован: 02.04.2017{, 14:09}
Репутация: 0
Откуда: Санкт-Петербург

Панель Nextion

#196

Сообщение Refugee » 07.04.2017{, 16:50}

Уважаемые знатоки, пробовал проект под названием урок 3 по дисплею nextion при компилировать скетча жалуется на отсутствие библиотеки DHT_NEW.h скетч не компилируется. Где взять библиотеку которую использовал автор, а то уже все которые мог перелопатил для датчика dht11

drimer
Рядовой
Сообщения: 57
Зарегистрирован: 07.09.2015{, 18:45}
Репутация: 0
Откуда: vilnius

Панель Nextion

#197

Сообщение drimer » 26.04.2017{, 19:17}

добрый день как в самой некстион сделать сразу два таймера суточных ? и в flprog ?

drimer
Рядовой
Сообщения: 57
Зарегистрирован: 07.09.2015{, 18:45}
Репутация: 0
Откуда: vilnius

Панель Nextion

#198

Сообщение drimer » 26.04.2017{, 19:18}

вот файл моего проекта
Для скачивания вложений Вы должны быть зарегистрированы.

Pixima
Рядовой
Сообщения: 64
Зарегистрирован: 30.01.2016{, 11:51}
Репутация: 0

Панель Nextion

#199

Сообщение Pixima » 02.05.2017{, 09:02}

Господа знатоки, использующие элемент "График", вопрос к Вам!
Какая скорость отрисовки линии у Вас? Почему то у меня при значении скорости уарт 115200 время вывода массива из 320 точек ничем не отличается от 9600. Я бы связал это с тем что скорость всё же осталась прежняя, но если в скетче оставить значение 9600 то коннекта вообще нет. На самой панели скорость менял командой "bauds=115200".

В добавок, на представленном видео скорость вывода графика офигенная (автор говорит, что скорость изменил на 115200), а элементов на экране достаточно много. Я же на чистом экране задаю один элемент "график".

В целом, у меня нет идей, как же увеличить скорость вывода, может кто сталкивался?
 _uVideoPlayer({'url':'');

Аватара пользователя
kiyota
Рядовой
Сообщения: 97
Зарегистрирован: 18.02.2016{, 20:07}
Репутация: 2
Откуда: Тюмень
Имя: Олег

Панель Nextion

#200

Сообщение kiyota » 03.05.2017{, 20:51}

drimer, Дело в том , что в базовой модели NX4832T035 нет встроенных часов реального времени , поэтому
все инструкции связанные с системными переменными RTC в этом проекте работать не будут , а сами таймеры
 и всю логику их работы необходимо реализовать на Arduino . Изложите подробнее логику работы самих
таймеров и какую Arduino вы будете использовать . Я просто делал проекты с этими панелями (различными)
поэтому чем могу помогу .
kiyota

Ответить

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