Панель Nextion
Панель Nextion
Зачем он тогда уточняет про "два знака после"? Хм.
А количество знаков для конечного поля - ограничить можно, но вводим то мы изначально в поле, которое не имеет ограничений - и в результате можем получить обрубок, который нас не устроит.
А количество знаков для конечного поля - ограничить можно, но вводим то мы изначально в поле, которое не имеет ограничений - и в результате можем получить обрубок, который нас не устроит.
Панель Nextion
Потому что в Nextion нет float, сравнивать можно только целые числа. А ему надо если <100.08 то так, а если >100.08, то этак.
Видно мы реализуем по разному, у меня ограничение в поле ввода.igee писал(а):ограничить можно, но вводим то мы изначально в поле, которое не имеет ограничений - и в результате можем получить обрубок, который нас не устроит.
Последний раз редактировалось Олег 10 мар 2017, 11:22, всего редактировалось 1 раз.
Панель Nextion
Вот пример моей реализации нумпада. Правда переходами у меня командует ардуина, но в остальном то же самое. Я задаю количество вводимых знакомест в кнопке по которой перехожу к нумпаду. У меня не вводятся лишние точки и нули, обрезаются лишние нули после запятой, добавляется ноль, если первый символ точка.
Сравнивать дробное на стороне Nextion - опять же, следи за точкой, убирай ее и все знаки после второго после точки, конвертируй и сравнивай.. но я бы так наверное не стал делать).Потому что в Nextion нет float, сравнивать можно только целые числа. А ему надо если <100.08 то так, а если >100.08, то этак.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось igee 10 мар 2017, 13:12, всего редактировалось 1 раз.
Панель Nextion
Да Олег,мне просто надо ограничить максимальное вводимое значение float.
С двумя знаками после запятой. Запятую двигать не нужно. Например 30.65 А максимум который можно ввести 100.00 Вот только с Си я совсем не дружу. Мне бы пример готовый.
С двумя знаками после запятой. Запятую двигать не нужно. Например 30.65 А максимум который можно ввести 100.00 Вот только с Си я совсем не дружу. Мне бы пример готовый.
Последний раз редактировалось Makenz[c 10 мар 2017, 15:10, всего редактировалось 1 раз.
Панель Nextion
Вот вам тот же пример, что выше, только с вашими пожеланиями. Ограничение по количеству символов после точки либо одно на весь проект задаете в переменной fract_lim на экране нумпада, либо привязываете к каждой кнопке( как в примере.) В переменной Numpad.chrs - задаете ограничение на количество вводимых символов. (в примере 6, т.к "100,00"). Аналогично либо на весь проект, либо привязка к кнопке. И обрезка по максимальному значению уже при возврате на экран с которого вызывали нумпад. Если значение больше 100, в текстовом поле будет 100, если меньше 100, то то значение, что ввели на нумпаде.
Добавлено (10.03.2017, 17:03)
---------------------------------------------
Я видел там был вариант расплаты "вскопать огород"! Так не честно! Куда убрали?
Добавлено (10.03.2017, 17:03)
---------------------------------------------
Я видел там был вариант расплаты "вскопать огород"! Так не честно! Куда убрали?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось igee 10 мар 2017, 17:04, всего редактировалось 1 раз.
Панель Nextion
Ребята спасибо,примеры что надо!
Igee,Олег отписался вам в личку.
Igee,Олег отписался вам в личку.
Последний раз редактировалось Makenz[c 11 мар 2017, 16:04, всего редактировалось 1 раз.
Панель Nextion
Хотел бы продолжить тему архитектуры мастер-слейв между дисплеем и ардуиной.
Пару слов о программе. Ардуина принимает показания датчика и при изменении значения - оправляет команду дисплею(использую родную библиотеку ) изменить текстовое поле.
При этом на экране присутствуют еще кнопки, которые при нажатии отправляют в ком порт свой ID(стандратная схема работы кнопок в библиотеке некстион), и который ардуина должна принимать и понимать что кнопка нажата.
Использование такой схемы натолкнуло меня на следующую проблему: если показания датчика меняются непрерывно, ардуина постоянно отправляет данные некстиону в ком порт, а нажатия кнопок на экране при этом в обратную сторону не проходят. Можно, конечно, поставить фильтр, чтобы измененные показания датчика отправлялись не непрерывно, но проблемы это не решает. Если нажать кнопку в момент отправки ардуиной команды на изменение текстового поля, то это нажатие контроллер не увидит.
Отсюда вопрос: как правильно реализовать схему взаимодействия экрана и ардуины?
Я пока что вижу одно решение: Убрать отсылку ID кнопок (и пр.) со стороны дисплея в ком порт. Вместо этого все нажатия фиксировать в самом экране (состоянием переменных или свойствами объектов), а ардуиной циклически эти параметры опрашивать и реагировать на их изменение уже по факту. На подсознании такая схема мне не очень нравится.
Может у кого есть еще какие мысли?
РЕШЕНО В ПОСТЕ 194
Пару слов о программе. Ардуина принимает показания датчика и при изменении значения - оправляет команду дисплею(использую родную библиотеку ) изменить текстовое поле.
При этом на экране присутствуют еще кнопки, которые при нажатии отправляют в ком порт свой ID(стандратная схема работы кнопок в библиотеке некстион), и который ардуина должна принимать и понимать что кнопка нажата.
Использование такой схемы натолкнуло меня на следующую проблему: если показания датчика меняются непрерывно, ардуина постоянно отправляет данные некстиону в ком порт, а нажатия кнопок на экране при этом в обратную сторону не проходят. Можно, конечно, поставить фильтр, чтобы измененные показания датчика отправлялись не непрерывно, но проблемы это не решает. Если нажать кнопку в момент отправки ардуиной команды на изменение текстового поля, то это нажатие контроллер не увидит.
Отсюда вопрос: как правильно реализовать схему взаимодействия экрана и ардуины?
Я пока что вижу одно решение: Убрать отсылку ID кнопок (и пр.) со стороны дисплея в ком порт. Вместо этого все нажатия фиксировать в самом экране (состоянием переменных или свойствами объектов), а ардуиной циклически эти параметры опрашивать и реагировать на их изменение уже по факту. На подсознании такая схема мне не очень нравится.
Может у кого есть еще какие мысли?
РЕШЕНО В ПОСТЕ 194
Последний раз редактировалось igee 20 мар 2017, 22:30, всего редактировалось 1 раз.
Панель Nextion
Здравствуйте коллеги!!!
Вопрос такой сделал проект на Nextion панели и в Flproge . На панели есть две кнопки одна должна зажигать светодиод на 13 ножке что она и делает , а другой элемент это рисунок с вентилятором ( при нажатии на вентилятор он на экране вращается) как сделать чтобы он включался по условию в ардуино допустим температура достигла сколько то градусов он включился . И хотелось бы чтобы на экране на него (вентилятор) нажал и панель кинула в ардуину 1 или 0. Блоки все прилагаю. Хотелось бы увидеть примеры . Заранее спасибо.
Вопрос такой сделал проект на Nextion панели и в Flproge . На панели есть две кнопки одна должна зажигать светодиод на 13 ножке что она и делает , а другой элемент это рисунок с вентилятором ( при нажатии на вентилятор он на экране вращается) как сделать чтобы он включался по условию в ардуино допустим температура достигла сколько то градусов он включился . И хотелось бы чтобы на экране на него (вентилятор) нажал и панель кинула в ардуину 1 или 0. Блоки все прилагаю. Хотелось бы увидеть примеры . Заранее спасибо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Панель Nextion
1. Если вы хотите реализовывать задумку предоставленными FLProg блоками, то вам в первую очередь нужно ознакомиться со справкой по работе с блоками Nextion. Там вы найдете описание подготовительных процедур для отслеживания нажатий.
2. Чтобы вентилятор работал как кнопка, вы должны отследить нажатие на него и убрать из дисплея реакцию на нажатие. Дисплей должен только отображать состояние дел в контроллере. Зачем вам видеть вращающийся вентилятор, когда он на самом деле выключен?
3. У вас 2 условия на включение вентилятора: это превышение температуры и нажатие на иконку. Соответственно реализовываем каждое условие и заводим на блок "ИЛИ".
Примеры не проверялись.
2. Чтобы вентилятор работал как кнопка, вы должны отследить нажатие на него и убрать из дисплея реакцию на нажатие. Дисплей должен только отображать состояние дел в контроллере. Зачем вам видеть вращающийся вентилятор, когда он на самом деле выключен?
3. У вас 2 условия на включение вентилятора: это превышение температуры и нажатие на иконку. Соответственно реализовываем каждое условие и заводим на блок "ИЛИ".
Примеры не проверялись.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Панель Nextion
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
Помогите что не так???
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
Помогите что не так???
Панель Nextion
а, ну да, .val допишите после переменных. Все время забываю. У каждого объекта в редакторе есть набор свойств и надо всегда указывать какому именно свойству объекта мы хотим присвоить значение: .val .pic .bco и т.д.
Панель Nextion
АЛЯРМА!
Кто пользуется библиотекой от ITEAD для ардуино. Там косяк. И не один. Вообще надо это где то большими буквами писать по хорошему. Все ниже сказанное верно для версии библиотеки 0.9.0.
Итак:
1. Дабы сэкономить место при компиляции удалите из папки с библиотекой файлы: NexUpload.h и NexUpload.cpp - 99% что они вам не понадобятся. Это уменьшит объем библиотеки при компиляции на 70%.
2. Чтобы нажатия кнопок на дисплее не терялись (то есть нажимаем - а реакции нет) в случае когда на дисплей отправляются постоянно изменяющиеся данные(индикация показаний датчика например) делаем следующее:
а) в файле NexHardware.h находим строкуи меняем 100 на 0.
б) В файле NexHardware.cpp находим строку:и делаем bkcmd=0
в) В том же NexHardware.cpp находими закомментируем. Непонятно для чего они чистят входящий буфер, когда у нас там нажатие на кнопку прилететь может.
г) Ну и последнее, но далеко не самое маловажное, после того, как мы обнулили таймаут в пункте (а) , кроме нас самих больше некому следить за тем с какой частотой будет отправляться команда на изменение значения текстового поля, или номера или чего бы то ни было. Поэтому ставьте фильтр с какой частотой слать команду в дисплей. Иначе забьете порт и получите висяк в лучшем случае.
PS: это решение проблемы из поста 188.
Кто пользуется библиотекой от ITEAD для ардуино. Там косяк. И не один. Вообще надо это где то большими буквами писать по хорошему. Все ниже сказанное верно для версии библиотеки 0.9.0.
Итак:
1. Дабы сэкономить место при компиляции удалите из папки с библиотекой файлы: NexUpload.h и NexUpload.cpp - 99% что они вам не понадобятся. Это уменьшит объем библиотеки при компиляции на 70%.
2. Чтобы нажатия кнопок на дисплее не терялись (то есть нажимаем - а реакции нет) в случае когда на дисплей отправляются постоянно изменяющиеся данные(индикация показаний датчика например) делаем следующее:
а) в файле NexHardware.h находим строку
Код: Выделить всё
bool recvRetCommandFinished(uint32_t timeout = 100);
б) В файле NexHardware.cpp находим строку:
Код: Выделить всё
sendCommand("bkcmd=1");
в) В том же NexHardware.cpp находим
Код: Выделить всё
while (nexSerial.available())
{
nexSerial.read();
}
г) Ну и последнее, но далеко не самое маловажное, после того, как мы обнулили таймаут в пункте (а) , кроме нас самих больше некому следить за тем с какой частотой будет отправляться команда на изменение значения текстового поля, или номера или чего бы то ни было. Поэтому ставьте фильтр с какой частотой слать команду в дисплей. Иначе забьете порт и получите висяк в лучшем случае.
PS: это решение проблемы из поста 188.
Последний раз редактировалось igee 20 мар 2017, 22:32, всего редактировалось 1 раз.
Панель Nextion
а как сделать так чтоб на странице первой в зависимости от времени года менялась основная картинка .....
Панель Nextion
Уважаемые знатоки, пробовал проект под названием урок 3 по дисплею nextion при компилировать скетча жалуется на отсутствие библиотеки DHT_NEW.h скетч не компилируется. Где взять библиотеку которую использовал автор, а то уже все которые мог перелопатил для датчика dht11
Панель Nextion
вот файл моего проекта
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Панель Nextion
Господа знатоки, использующие элемент "График", вопрос к Вам!
Какая скорость отрисовки линии у Вас? Почему то у меня при значении скорости уарт 115200 время вывода массива из 320 точек ничем не отличается от 9600. Я бы связал это с тем что скорость всё же осталась прежняя, но если в скетче оставить значение 9600 то коннекта вообще нет. На самой панели скорость менял командой "bauds=115200".
В добавок, на представленном видео скорость вывода графика офигенная (автор говорит, что скорость изменил на 115200), а элементов на экране достаточно много. Я же на чистом экране задаю один элемент "график".
В целом, у меня нет идей, как же увеличить скорость вывода, может кто сталкивался?
_uVideoPlayer({'url':'https://www.youtube.com/watch?v=8A02d27 ... 01OS1D5qTu');
Какая скорость отрисовки линии у Вас? Почему то у меня при значении скорости уарт 115200 время вывода массива из 320 точек ничем не отличается от 9600. Я бы связал это с тем что скорость всё же осталась прежняя, но если в скетче оставить значение 9600 то коннекта вообще нет. На самой панели скорость менял командой "bauds=115200".
В добавок, на представленном видео скорость вывода графика офигенная (автор говорит, что скорость изменил на 115200), а элементов на экране достаточно много. Я же на чистом экране задаю один элемент "график".
В целом, у меня нет идей, как же увеличить скорость вывода, может кто сталкивался?
_uVideoPlayer({'url':'https://www.youtube.com/watch?v=8A02d27 ... 01OS1D5qTu');
Панель Nextion
drimer, Дело в том , что в базовой модели NX4832T035 нет встроенных часов реального времени , поэтому
все инструкции связанные с системными переменными RTC в этом проекте работать не будут , а сами таймеры
и всю логику их работы необходимо реализовать на Arduino . Изложите подробнее логику работы самих
таймеров и какую Arduino вы будете использовать . Я просто делал проекты с этими панелями (различными)
поэтому чем могу помогу .
все инструкции связанные с системными переменными RTC в этом проекте работать не будут , а сами таймеры
и всю логику их работы необходимо реализовать на Arduino . Изложите подробнее логику работы самих
таймеров и какую Arduino вы будете использовать . Я просто делал проекты с этими панелями (различными)
поэтому чем могу помогу .
kiyota
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя