Прошу подсказать или направить на пример для Nextion. Чтобы кнопка при нажатии с определенной выдержкой по времени, выполняла определенное действие?
1. Нажатие и удержание ~ 3сек - одно действие
2. Нажатие и удержание ~ 5сек - другое действие
.... и т.д.
Спасибо!
Nextion -Несколько действий при нажатии на кнопку по времени?
Сообщений 1 страница 26 из 26
Поделиться12019-02-15 21:51:28
Поделиться22019-02-16 11:54:42
По событию Touch Press Event запускаем таймер и по срабатыванию таймера инкременируем переменную.
В событии Touch Release Event выполняем действие в зависимости от "натиканного".
Значение таймера лучше выставить не 1000 (1 сек), а 500 или меньше - точнее будет.
Поделиться32019-02-16 16:16:19
Если одна кнопка будет выполнять несколько действий в зависимости от удержания, то нужно будет фиксировать промежутки времени, например звуковым/световым сигналом. 1 пик- одно действие, 2 пик- другое, и т.д.
Поделиться42019-02-16 16:21:47
Это уже надо описывать в событиях таймера, контролируя значение переменной.
Отредактировано Nord (2019-02-17 15:34:03)
Поделиться52019-02-19 21:42:00
Вот мои соображения. Вроде просто кнопка а не все так просто.
Поступило прерывание, причем штук 50 сразу в мс (дребезг). Вот диаграмма длинного нажатия
0 10 30 500 530 540 Время, мс
1-----------------\/\/\/\/\/\________0________/\/\/\/\/--------------------1 Состояние порта
События 1 2 3 4
событие между 1и2 кнопка замыкается, между 2и3 удерживается, между 3и4 размыкается.
После прерывания от кнопки (событие 1) запускаем таймер. до события 2 каждый раз таймер запускается но поскольку он уже работает ничего не происходит. В подпрограмме таймера проверяем состояние кнопки.
Срабатывания таймера 50 мс - проверка состояния: кнопка нажата - ничего не делаем (антидребезг)
кнопка отпущена - останавливаем и сбрасываем таймер (событий не было, прерывание поступило при отпускании кнопки)
Срабатывания таймера 100..250 мс - проверка состояния: кнопка отпущена - вывод - было короткое нажатие. Останавливаем и сбрасываем таймер
кнопка нажата - ничего не делаем
Срабатывания таймера каждые 300 мс - проверка состояния: кнопка отпущена - было длинное нажатие. Останавливаем и сбрасываем таймер
кнопка нажата - можно инкриминировать кол-во длинных нажатий.
В подпрограмме таймера в начале запрещаем и в конце разрешаем прерывание от кнопки.
Кто бы теперь это в код завернул))))
Отредактировано Pasha (2019-02-19 21:43:21)
Поделиться62019-02-19 22:01:29
Поступило прерывание, причем штук 50 сразу в мс (дребезг).
Биг сорри, но какое отношение это имеет к Nextion ? 
Тут дребезгов нет...
Отредактировано Nord (2019-02-19 22:02:49)
Поделиться72019-02-19 22:43:15
Упс. Согласен. Невнимательность моя.
Поделиться82019-02-20 21:36:31
Занятно...
ТС куда-то пропал, а мы тут без него его проблемы уже почти решили... 
Поделиться92019-02-20 23:09:28
Занятно...
ТС куда-то пропал, а мы тут без него его проблемы уже почти решили...
Всем привет! Nord , да я не пропадал , возле рядом
. Спасибо за наводку , но , я примерами больше живу чем наводками , иногда бывает даже не знаешь что писать куда надо
В общем получилось пока как-то так
Пример: Добавляем таймер "tm0" в Attribute установим tim= 500 (ms) en= 0 ( выкл.)
В св-вах кнопки Touch Press Event Touch Release Event
пишим tm0.en=1 //запускаем таймер tm0.en=0 //выключаем таймер
n0.val=0 // обнулить переменную
В таймере "tm0"
Timer Event
n0.val++ // инкременируем переменную "n0"
При нажатии и удержание кнопки, таймер начинает каждые 500 мс увеличивать переменную прим. "n0" ( я ее вытащил на экран) , после отпускания, выключается таймер и обнуляется переменная.
То есть выдержали нужную временную паузу , сравнили, сделали действия и отпустили ( обнуление можно сделать и после действия)
Еще думаю про то что выше kip написал.
Отредактировано qewin (2019-02-20 23:25:43)
Поделиться102019-02-21 08:36:44
Пример:
Добавляем таймер "tm0" в Attribute установим
tim= 500 (ms) // лучше 100, точнее будет
en= 0 ( выкл.)В св-вах кнопки
Touch Press Event
tm0.en=1 //запускаем таймерTouch Release Event
tm0.en=0 //выключаем таймер
n0.val=0 // обнулить переменнуюВ таймере "tm0"
Timer Event
n0.val++ // инкременируем переменную "n0"
То есть выдержали нужную временную паузу , сравнили, сделали действия и отпустили ( обнуление можно сделать и после действия)
"Выдержать" паузу - это палец оператора, а вот отсчитать - дело дисплея. 
"сравнили, сделали действия и отпустили" - неточная последовательность...
Должно быть "отпустили - сравнили - действие"
В плане предложения kip.
Я бы для этой "кнопки" сделал подложку, которую кратковременно показывал (vis=1) при ступенях отсчета.
Прошла секунда (2 или 10 отсчетов) - "мигнули" подложкой на один отсчет таймера.
Можно "мигнуть" по истечении требуемого периода, 3 или 5 сек, как изначально описано.
Используем ту же переменную.
Для этого до проверки переменной в событии таймера добавить:
if(....vis==1)
{
....vis=0
}
Дальше проверяем значение "натиканого" (там же, в таймере).
if(n0.val==10) // Для 10 отсчетов
{
....vis=1
}
При следующем "тике" подложка "погаснет" до следующего совпадения.
Отредактировано Nord (2019-02-21 19:02:17)
Поделиться112019-02-22 21:15:34
Нажимаем кнопку и считаем количество морганий. отпустили. До 255 действий одной кнопкой.
If Kn = 0 Then A = 0 start timer0 Bitwait Kn , Set stop timer0 On A Gosub L0 , L1 , L2, .... ,L255 End If L0: Return L1: Return L2: Return Tim0: Reset Led Incr B If B = 0 Then' от 1 до 255 подбираем время, какое нравится Incr A Set Led End If Return
Поделиться122019-02-23 21:56:04
Вот за что я обожаю форумы - так за малооткликаемость вопрошающих... 
Поделиться132019-02-24 10:16:00
Всех муЖчин с праздником День защитника Отечества
. Nord , kip спасибо за инфу! Nord , малооткликаемость у меня потому что стараюсь сам допилить и найти, вот уж когда совсем в тупике прихожу сюда, да и время получается поковыряться бывает буквально 20-40мин.
По поводу сенсора на Nextion то буду дублировать физическими кнопками , так как резистивный тач скор на отказ.
Поделиться142019-02-24 13:22:19
По поводу сенсора на Nextion то буду дублировать физическими кнопками , так как резистивный тач скор на отказ.
Упс... Откуда такая инфа ? 
Не думаю, что сенсорная панель у дисплея сильно отличается по статистике отказов от планшетных, смартфонных и пр.
Там ломаться практически нечему, если гвоздями не тыкать... 
Поделиться152019-02-24 14:03:50
Упс... Откуда такая инфа ?
Не думаю, что сенсорная панель у дисплея сильно отличается по статистике отказов от планшетных, смартфонных и пр.
Там ломаться практически нечему, если гвоздями не тыкать...
Личный опыт, два Samsung GT-S5230 у меня и жены за два года пользования ей менял тач 2 раза себе один раз.
Ну и пока не решил какой бокс применить , может вообще закрою тонким стеклом или пластиком.
Поделиться162019-02-24 16:20:31
У супруги Samsung G-5210 уже более 4-лет.
Живой и здоровый... 
может вообще закрою тонким стеклом или пластиком.
И какой смысл тогда в тачскрине ? 
Тогда хоть кричи на него - нажатия, а уж тем более касания не увидит... 
Отредактировано Nord (2019-02-24 16:27:19)
Поделиться172019-02-24 17:44:57
И какой смысл тогда в тачскрине ?
Тогда хоть кричи на него - нажатия, а уж тем более касания не увидит...
Смысл пока в изучении, возможности. Сделаю потихоньку, может я и зря грешу на тач, может научились делать?
Но и все-таки кнопочки нужно сделать 
Поделиться182019-02-24 17:45:50
В своем проекте (ранее обсуждаемом) убрал "мусор", изменил интерфейс настройки даты-времени, добавил 4-кан. таймер.
Если интересно - могу скинуть.
Поделиться192019-02-24 17:49:59
Но и все-таки кнопочки нужно сделать
Если у дисплея есть GPIO, то еще есть смысл их синхронизировать.
Это, если дисплей Enhanced, у Basic этого порта нет...
А делать клавиатуру от внешнего МК - сродни оккультизму... 
Поделиться202019-02-24 17:50:48
Nord , Ну если можно , очень даже хочется посмотреть! Я вот хочу спросить по поводу примерчиков на Nextion , то что есть в сети очень обобщенно , очень мало . Знаешь ли ресурсы или форумы подобные этому но только на Nextion?
Отредактировано qewin (2019-02-24 17:51:35)
Поделиться212019-02-24 17:52:48
Nord , Ну если можно , очень даже хочется посмотреть! Я вот хочу спросить по поводу примерчиков на Nextion , то что есть в сети , очень мало . Знаешь ли ресурсы или форумы подобные этому но только на Nextion?
Мне очень даже помогла вот эта тема (если раньше не давал ссылку):
http://forum.amperka.ru/threads/Дисплей-nextion-азы-arduino-esp8266.9204/
Поделиться222019-02-24 17:57:26
Попадалась, буду еще смотреть 
Поделиться232019-02-24 18:11:51
По теме что-то получилось ?
Поделиться242019-02-24 18:25:46
По теме что-то получилось ?
Да, но пока набросками.Теперь самому себе задаю вопросы
. Получил , очень интересно пунктик ( page12 - планируемый сводный график-логгер температуры.
Пока в разработке... ) Я использую модуль часов там есть микруха с памятью , интересно было бы тоже сделать сохранения на нее график данные давления или температуры , ну, допустим за сутки, а то атмегу туда сюда затирать !
Поделиться252019-02-24 18:31:11
Получил , очень интересно пунктик ( page12 - планируемый сводный график-логгер температуры.
Понял, исходник по ссылке удаляю.
WaveForm для меня - пока чистый лист, еще вкуриваю только... 
Поделиться262019-02-24 18:44:23
Ну, как бы по теме мне стало понятно, спасибо всем участвующим! Дальше буду пилить причесывать, подключать вторую страницу на ней радио
Если кто захочет добавить , думаю кому то тоже пригодиться!