долгое удержание кнопки
- Войдите на сайт для отправки комментариев
Втр, 27/09/2016 - 18:24
дело есть к вам, подскажите как сделать.
одиночное нажатие на простую кнопку дается сигнал на пин
длинное удержание(например 10 сек) дается на другой пин
и еще можно ли при помощи rs522 rfid так же сделать, если карта своя то короткое и длинное удержание дают напряжение на разные пины
Если правильно понял, то вот http://arduino.ru/Reference/PulseIn
дело есть к вам, подскажите как сделать.
одиночное нажатие на простую кнопку дается сигнал на пин
длинное удержание(например 10 сек) дается на другой пин
никак - что бы сделать длинное нажатие, нужно сделать одиночное нажатие.
одиночное нажатие может зажигать первый пин по отпусканию. Если оно действительно краткое, то никто и не заметит подвоха.
а, ещё можно по даблклику что-то делать, но ТЗ - нажатие и никак иначе.
*после длинного нажатия всегда следует отпускание - судьбу не обманешь и причинно-следственная связь настигнет тебя, если не в настоящем, то в будущем...
После длинного нажатия уже ясно что оно было длинным и при отпускании действие соответствующее. Кстати длинного отпускания ждать не обязательно, как только длительность в состоянии нажато превысило отведеную для коротких - можно запускать действие.
ПС. обман судьбы - распостраненное явление. Ща я буду сохранять это сообщение, клацну мышой на "сохранить", а действие выполнится именно по отпусканию.
После длинного нажатия уже ясно что оно было длинным и при отпускании действие соответствующее. Кстати длинного отпускания ждать не обязательно, как только длительность в состоянии нажато превысило отведеную для коротких - можно запускать действие.
ПС. обман судьбы - распостраненное явление. Ща я буду сохранять это сообщение, клацну мышой на "сохранить", а действие выполнится именно по отпусканию.
ну, в принципе возможно, но уродский алгоритм получается.
одиночное нажатие может зажигать первый пин по отпусканию. Если оно действительно краткое, то никто и не заметит подвоха.
Очень хорошая идея! И очень вовремя. Я вот-прям-щас размышлял о том, как обработать длинное нажатие не обрабатывая короткое. Вроде очевидное решение, но, просто, очень вовремя!
Мои благодарности!
Очень хорошая идея! И очень вовремя. Я вот-прям-щас размышлял о том, как обработать длинное нажатие не обрабатывая короткое. Вроде очевидное решение, но, просто, очень вовремя!
Мои благодарности!
да, уж - хорошая.
поюзай вначале вживую эргономику такого решения - одно неверное движение и ты попал на одиночное нажатие.
Ясно, что с головой надо применять. Одиночное должно быть навигаций по меню на данном уровне, а длинное - переход на уровень вверх/вниз по меню, тогда все ОК. Если же одиночное меняет параметр, а длинное - навигационное действие - тогда да, можно гадость получить.
------------------------
И, к тому же, если взять твой "титановый велосипед", то дребезг ты уже отработал, просто вешать исполнение на отпускание, то есть уже в пользовательской программе, а драйвер - твой, "титановый", без изменений.
Если матрица 3х4 или 4х4, то, не знаю как другие, а у меня для матрицы некое подобие твоего драйвера для одной кнопки есть. Разницы никакой.
if(knopka нажата)
{
I++;
Delay допустим 5 милисек
if(i>50)
{делаем то что нужно например инвентируем D6
i=0;
}
if(i<50){
делаем че нужно например инвентируем D5
i=0;
}
}
сорри что так но смысл думаю будет ясен
Вот сразу для четырех кнопок, проверено, работает...
Одна кнопка — три выхода(с памятью) на Attiny13
https://www.drive2.ru/
И, к тому же, если взять твой "титановый велосипед", то дребезг ты уже отработал, просто вешать исполнение на отпускание, то есть уже в пользовательской программе, а драйвер - твой, "титановый", без изменений.
ну, если ты юзаешь класс титановый велосипед для тактовой кнопки, то там оговаривалось много раз, что нажатие - есть причина всего. т.е. вначале нажатие, затем стулья.
Тоже подобное как-то икал, и Вот что нашел:
Необходима библиотека OneButton.h
Спасибо, можешь сказать что за библиотека rotary?
Мне надо чтобы значение не с пина брало, а с переменной в моем случае sam.
Нужны ли тут 9-11строчка?
Можешь обьяснить как работает?
у меня все это происходит в большом коде и при использовании библиотеки onebutton, ошибки.
логика такая метка в зоне действия( переменная sam HIGH)
таймер считает
метка ушла из зоны действия(переменная sam LOW)
таймер остановился.
сравнивает если <или= 2сек то
действие 1.
сравнивает если > 2сек то
действие 2.
может использовать pulsein?
вродебы просто, но реализовать незнаю как.
Вы что это специально. Давно можно решить эту задачу и пить пиво. Или вы не любите пиво, вам в кайф народ будоражить?
дак ты помоги, и вопрос закрыт
дак ты помоги, и вопрос закрыт
повылазило? класс титановый велосипед для тактовой кнопки
дак ты помоги, и вопрос закрыт
Так тебе тут уже наидали куеву хучу примеров, чего еще нужно ???
Ему не примеры нужны, а готовой код. Очевидно же...
http://arduino.ru/forum/programmirovanie/taimery-i-programmnyi-antidrebezg-vkhodov#comment-223426
Я тут приводил кусок кода, который различает короткое и длинное нажатие. Вместо key=1 & key=2 можно вставить команды управления разными пинами. (k1cnt > 40) - 20мс х 40 = 800мс - время длинного нажатия. Изменяя 40 можно менять время чувстительности к длинному нажатию. Для k1cht byte максимальное время около 5 секунд.
Rotary можешь не использывать, она для энкодера.
У тебя библиотека #include "OneButton.h".
Там и примеры есть
дело есть к вам, подскажите как сделать.
нажатие удерживания на простую кнопку дает сигнал на лед 1 загораеца на 5секунд и тухнет.
при отпускания кнопки загорается лед 2 и тоже на 5 сек гаснет.
может кто помочь пожалуйста
курсовая небось? сам делай, примеров тут полно. В шапке вон аж три или четыре темы про кнопки
mea .Решение #21
спасибо ...балшое
но мне нужна нимношка падругому
вот как .....
если сможеш фсио зделати я тебе заплачу денгами
qwone, есть одна задачка:
Мониторчик LCD1062(16х2)
Долгое нажатие кнопки должно выключать подсветку(зеленую)
#29
qwone, есть одна задачка:
По моему, это унизительно. Только за деньги!
пальцем щелкнуть забыл