Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Nextion -Несколько действий при нажатии на кнопку по времени?


Nextion -Несколько действий при нажатии на кнопку по времени?

Сообщений 1 страница 26 из 26

1

Прошу подсказать или направить на пример для Nextion. Чтобы кнопка при нажатии с определенной выдержкой по времени, выполняла определенное действие?
1. Нажатие и удержание ~ 3сек - одно действие
2. Нажатие и удержание ~ 5сек - другое действие
.... и т.д.
Спасибо!

0

2

По событию Touch Press Event запускаем таймер и по срабатыванию таймера инкременируем переменную.
В событии Touch Release Event выполняем действие в зависимости от "натиканного".
Значение таймера лучше выставить не 1000 (1 сек), а 500 или меньше - точнее будет.

0

3

Если одна кнопка будет выполнять несколько действий в зависимости от удержания, то нужно будет фиксировать промежутки времени, например звуковым/световым сигналом. 1 пик- одно действие, 2 пик- другое, и т.д.

+1

4

Это уже надо описывать в событиях таймера, контролируя значение переменной.

Отредактировано Nord (2019-02-17 15:34:03)

0

5

Вот мои соображения. Вроде просто кнопка а не все так просто.
Поступило прерывание, причем штук 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)

0

6

Pasha написал(а):

Поступило прерывание, причем штук 50 сразу в мс (дребезг).

Биг сорри, но какое отношение это имеет к Nextion ? ;)
Тут дребезгов нет...

Отредактировано Nord (2019-02-19 22:02:49)

0

7

Упс. Согласен. Невнимательность моя.

0

8

Занятно...
ТС куда-то пропал, а мы тут без него его проблемы уже почти решили... ;)

0

9

Nord написал(а):

Занятно...
ТС куда-то пропал, а мы тут без него его проблемы уже почти решили... ;)


Всем привет! Nord , да я не пропадал , возле рядом  :flag: . Спасибо за наводку , но , я примерами больше живу чем наводками , иногда бывает даже не знаешь что писать куда надо  :dontknow:      В общем получилось пока как-то так

Пример:    Добавляем  таймер    "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" ( я ее вытащил на экран) , после отпускания, выключается таймер и обнуляется переменная. :yep:  То есть выдержали нужную временную паузу , сравнили, сделали действия и отпустили ( обнуление можно сделать и после действия)

Еще думаю про то что выше   kip написал.

Отредактировано qewin (2019-02-20 23:25:43)

0

10

qewin написал(а):

Пример:
Добавляем  таймер    "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"

qewin написал(а):

То есть выдержали нужную временную паузу , сравнили, сделали действия и отпустили ( обнуление можно сделать и после действия)

"Выдержать" паузу - это палец оператора, а вот отсчитать - дело дисплея. ;)

"сравнили, сделали действия и отпустили" - неточная последовательность...
Должно быть "отпустили - сравнили - действие"

В плане предложения 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)

+1

11

Нажимаем кнопку и считаем количество морганий. отпустили. До 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

+1

12

Вот за что я обожаю форумы - так за малооткликаемость вопрошающих... ;)

0

13

Всех муЖчин с праздником   День защитника Отечества  :flag: .   Nord , kip  спасибо за инфу!  Nord ,  малооткликаемость у меня потому что стараюсь сам допилить и найти, вот уж когда совсем в тупике прихожу сюда, да и время получается поковыряться бывает буквально 20-40мин.

По поводу сенсора на Nextion то буду дублировать физическими кнопками , так как резистивный тач скор на отказ.

0

14

qewin написал(а):

По поводу сенсора на Nextion то буду дублировать физическими кнопками , так как резистивный тач скор на отказ.

Упс...  Откуда такая инфа ? ;)
Не думаю, что сенсорная панель у дисплея сильно отличается по статистике отказов от планшетных, смартфонных и пр.
Там ломаться практически нечему, если гвоздями не тыкать... ;)

0

15

Nord написал(а):

Упс...  Откуда такая инфа ? ;)
Не думаю, что сенсорная панель у дисплея сильно отличается по статистике отказов от планшетных, смартфонных и пр.
Там ломаться практически нечему, если гвоздями не тыкать... ;)


Личный опыт, два Samsung GT-S5230   у меня и  жены за два года пользования ей менял тач  2 раза себе один раз.
Ну и пока не решил какой бокс применить , может вообще закрою тонким стеклом или пластиком.

0

16

У супруги Samsung G-5210 уже более 4-лет.
Живой и здоровый... ;)

qewin написал(а):

может вообще закрою тонким стеклом или пластиком.

И какой смысл тогда в тачскрине ? ;)
Тогда хоть кричи на него - нажатия, а уж тем более касания не увидит... ;)

Отредактировано Nord (2019-02-24 16:27:19)

0

17

Nord написал(а):

И какой смысл тогда в тачскрине ? ;)
Тогда хоть кричи на него - нажатия, а уж тем более касания не увидит... ;)

Смысл пока в изучении, возможности. Сделаю потихоньку, может я и зря грешу на тач, может научились делать?
Но и все-таки кнопочки нужно сделать :rolleyes:

+1

18

В своем проекте (ранее обсуждаемом) убрал "мусор", изменил интерфейс настройки даты-времени, добавил 4-кан. таймер.
Если интересно - могу скинуть.

0

19

qewin написал(а):

Но и все-таки кнопочки нужно сделать

Если у дисплея есть GPIO, то еще есть смысл их синхронизировать.
Это, если дисплей Enhanced, у Basic этого порта нет...

А делать клавиатуру от внешнего МК - сродни оккультизму... ;)

0

20

Nord , Ну если можно , очень даже хочется посмотреть! Я вот хочу спросить по поводу примерчиков на Nextion , то что есть в сети очень обобщенно , очень мало . Знаешь ли ресурсы или форумы подобные этому но только на Nextion?

Отредактировано qewin (2019-02-24 17:51:35)

0

21

qewin написал(а):

Nord , Ну если можно , очень даже хочется посмотреть! Я вот хочу спросить по поводу примерчиков на Nextion , то что есть в сети , очень мало . Знаешь ли ресурсы или форумы подобные этому но только на Nextion?

Мне очень даже помогла вот эта тема (если раньше не давал ссылку):
http://forum.amperka.ru/threads/Дисплей-nextion-азы-arduino-esp8266.9204/

0

22

Попадалась, буду еще смотреть :writing:

0

23

По теме что-то получилось ?

0

24

Nord написал(а):

По теме что-то получилось ?

Да, но пока набросками.Теперь самому себе задаю вопросы  :crazyfun: .      Получил , очень интересно  пунктик  (  page12 - планируемый сводный график-логгер температуры.
Пока в разработке... ) Я использую модуль часов там есть микруха с памятью , интересно было бы тоже сделать сохранения на нее график данные давления или температуры , ну, допустим за сутки, а то атмегу туда сюда затирать !

0

25

qewin написал(а):

Получил , очень интересно  пунктик  (  page12 - планируемый сводный график-логгер температуры.

Понял, исходник по ссылке удаляю.

WaveForm для меня - пока чистый лист, еще вкуриваю только... ;)

0

26

Ну, как бы по теме мне стало понятно, спасибо всем участвующим! Дальше буду пилить причесывать, подключать вторую страницу на ней радио  :music:
Если кто захочет добавить , думаю кому то тоже пригодиться!

+1


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Nextion -Несколько действий при нажатии на кнопку по времени?