Например TDA7294

Форум РадиоКот • Просмотр темы - Кнопки: короткое и долгое нажатие. Наиболее удобный алгоритм
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт май 18, 2021 01:42:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Кнопки: короткое и долгое нажатие. Наиболее удобный алгоритм
СообщениеДобавлено: Ср май 05, 2021 07:59:40 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Никогда не подумал бы, что задам этот вопрос, но после долгих размышлений решил задать.

В устройствах на МК с малым количеством кнопок управления очень часто есть вынужденная необходимость разделять короткое и долгое нажатие кнопок. И в связи с этим вопрос: какой алгоритм наиболее удобен с точки зрения пользователя - реакция на НАЖАТИЕ или на ОТПУСКАНИЕ кнопок?

Очевидно же, что в момент нажатия предсказать, будет кнопка долго нажата или недолго, невозможно. Поэтому при алгоритме ПО НАЖАТИЮ всегда будет сначала выполнена функция по короткому нажатию, а затем функция по долгому нажатию. При алгоритме ПО ОТПУСКАНИЮ, естественно, будет выполнена нужная функция, но не сразу, а... потом, когда кнопку отпустят.
В итоге в обоих алгоритмах пользователь может попасть в ситуацию, когда происходит не то, что он ожидает.
Вот и вопрос: что же удобнее?

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 08:32:54 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 1189
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2224
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Проще всего провести натурные испытания.
Сделай 4 кнопки (2 кор + 2 длин по разному срабатывающих) и включение светодиода скажем и дай эту конструкцию разным людям.
Пусть скажут какие кнопки им оказались очевидней, логичней, предсказуемей...

Скорее всего будет так: короткое нажатие по отпусканию, длинное по заложенному времени.

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 08:37:36 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Я потому вопрос на форуме и задал, чтобы избежать долгих "статистических" экспериментов - каждый наверняка имеет опыт в использовании малокнопочных устройств, как самодельных, так и "настоящих" (например, наручные электронные часы). Просто поделиться опытом - вот и будет статистика.

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 09:21:48 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 99
Зарегистрирован: Сб апр 15, 2017 02:30:29
Сообщений: 376
Откуда: Россия
Рейтинг сообщения: 0
В некотрых моделях цифровых ТВ приставок, как пример DEXP HD2991 две кнопки последовательного переключения программ при длительном удержании работают как кнопки регулиррвки громкости, если кратковременно нажимать эти кнопки, переключаются каналы, если нажать и удерживать какую либо кнопку, через пару секунд начинает изменятся уровень громкости, при отпускании уровень громкость перестаёт «ползти».


Вернуться наверх
 
Барьерные силовые клеммы от Degson – расширение складского ассортимента Компэл

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 09:41:47 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Zyklon-B писал(а):
если кратковременно нажимать эти кнопки, переключаются каналы, если нажать и удерживать какую либо кнопку, через пару секунд начинает изменятся уровень громкости,
каналы переключаются в момент нажатия кнопки или при отпускании? т.е. когда хочется изменить громкость - сначала канал переключится, или нет?

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


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 10:18:20 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 99
Зарегистрирован: Сб апр 15, 2017 02:30:29
Сообщений: 376
Откуда: Россия
Рейтинг сообщения: 0
ARV

Цитата:
каналы переключаются в момент нажатия кнопки или при отпускании?

При отпускании.
Цитата:
т.е. когда хочется изменить громкость - сначала канал переключится, или нет?

Нет. При нажатии кнопки сначала ничего не происходит, если нажать и сразу отпустить кнопку, переключится канал, если удерживать кнопку, через пару секунд на экране появится шкала громкости и уровень громкости изменится в ту или иную сторону, в зависимости от того, какую кнопку удерживать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 10:19:46 
Опытный кот

Карма: 3
Рейтинг сообщений: 58
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 724
Рейтинг сообщения: 0
Цитата:
при длительном удержании работают как кнопки регулиррвки громкости, если кратковременно нажимать эти кнопки, переключаются каналы,

дрочево по китайски


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 10:30:35 
Мудрый кот
Аватар пользователя

Карма: 21
Рейтинг сообщений: 625
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1739
Откуда: Украина, Северодонецк
Рейтинг сообщения: 0
ARV писал(а):
какой алгоритм наиболее удобен с точки зрения пользователя - реакция на НАЖАТИЕ или на ОТПУСКАНИЕ кнопок?


О чем вы там так долго думали?
С точки зрения логики, если у устройства на одну и ту же кнопку есть разные функции длинное и короткое нажатие, то, как думаете, долго нажимая на кнопку, будет ожидать пользователь что отработает короткое нажатие?
Если есть длинные, то только на отпускание, если только короткие - то на нажатие (пользователю будет понятно, что длинных нет). :facepalm:

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 10:32:31 
Друг Кота
Аватар пользователя

Карма: 88
Рейтинг сообщений: 1050
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11905
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
По нажатии ожидается антидребезг, после подтверждения запуск процедуры по заданному вектору и выход на ожидание отпускания.
Само первое прохождение сразу за подтверждением меняет указатель исполняемой функции на "исполнение при ожидании отпускания". А там - или счетчик сканов или собственный таймер длительности выставляем...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 10:39:02 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
RoboC писал(а):
О чем вы там так долго думали?
дело в том, что, например, в Windows при двойном клике кнопкой мышки сначала генерируется событие "нажата кнопка мышки", а следом впридачу генерируется событие "двойное нажатие кнопки мышки". и программист сам должен разобраться, когда как реагировать.

в описанной проблеме ситуация схожая

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 11:37:58 
Встал на лапы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 22
Зарегистрирован: Ср сен 16, 2020 20:38:41
Сообщений: 114
Откуда: Краснодарский край, г.Абинск
Рейтинг сообщения: 0
какой алгоритм наиболее удобен с точки зрения пользователя - реакция на НАЖАТИЕ или на ОТПУСКАНИЕ кнопок?

Думаю, при обработке длительности нажатия -- однозначно, только по отпусканию.
Функция обработки нажатия кнопки должна отследить факт её нажатия (устранить дребезг), включить счётчик длительности, определить факт отпускания (опять же дребезг) и установить значение в течении которого кнопка была нажата (просто признак длительного нажатия).
В основной программе вызываем эту функцию и спрашиваем: кнопка была нажата и длительно -- выполняем "длительное" нажатие, если была нажата и не долго -- выполняем "короткое" нажатие, ну а если не была нажата -- само дальше идёт.
У меня как-то так "нарисовалось" :wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 12:20:43 
Друг Кота
Аватар пользователя

Карма: 88
Рейтинг сообщений: 1050
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11905
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
многое зависит от алгоритма сканирования....
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 12:52:42 
Встал на лапы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 22
Зарегистрирован: Ср сен 16, 2020 20:38:41
Сообщений: 114
Откуда: Краснодарский край, г.Абинск
Рейтинг сообщения: 0
Ннну да :)
Но в общих-то чертах он пойдёт в любом случае. Алгоритм сканирования (или матрица кнопок, или каждая на свой вход контроллера) пусть и обрабатывается в функции, отвечающей за опрос нажатия. Пусть это будет хоть "линейно", хоть по прерыванию, но в общих чертах я бы так и реализовал, как подумалось.
В основную программу должно возвращаться "факт нажатия" и "признак длительности" :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 15:20:37 
Открыл глаза

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Пн янв 08, 2007 18:23:08
Сообщений: 40
Рейтинг сообщения: 0
Привет КотаФеям.

Длинное ,короткое нажатие кнопок определяю используя такие флаги.

(KeyS_Data) переменная
7 bit - факт нажатия кнопки.
6 bit - LONG1 удержание нажатой кнопки.
5 bit - LONG2 удержание нажатой кнопки.
4 бит - Кнопка нажата/отжата.
3 бит -\
2 бит -|
1 бит -| code KEY
0 бит -/

Вот мой пример на ASM.


Вложения:
Key_in.asm [4.33 KiB]
Скачиваний: 15
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 19:54:05 
Первый раз сказал Мяу!

Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 29
Откуда: Смоленск
Рейтинг сообщения: 0
Я обычно делаю так. Кнопка генерит три события: нажата, отпущена, долго нажата. Причем, после "долго нажата" не бывает "отпущена".
Реальные действия выполняются по "отпущена" и "долго нажата". Если кнопка типа тактовой, со щелчком, то "нажата" можно игнорить. Если кнопка "мягкая", типа метал. антивандальной, то по "нажата" делаем какой-то beep, ну при наличии пищалки естественно. По событию "долго нажата" ИМХО очень желательно издавать какой-нибудь звук.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 20:10:17 
Вымогатель припоя

Карма: 10
Рейтинг сообщений: 53
Зарегистрирован: Вт янв 26, 2021 22:33:21
Сообщений: 549
Рейтинг сообщения: 0
В прерывании проверяем нажата ли кнопка, если да - то инкрементируем счётчик нажатия, если нет - то проверяем счётчик времени удержания , если он не равен нулю то произошёл отпуск кнопки, устананавливаем флаг отпуска . В основном цикле проверяем не установлен ли флаг отпуска , если да, то в зависимости от значения счётчика удержания ... выполняем нужные процедуры.

Добавлено after 4 minutes 15 seconds:
Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алгоритм
В прерывании по таймеру имелось ввиду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Ср май 05, 2021 21:46:55 
Это не хвост, это антенна
Аватар пользователя

Карма: 33
Рейтинг сообщений: 333
Зарегистрирован: Чт июл 28, 2016 07:58:37
Сообщений: 1321
Откуда: Kyiv, UA
Рейтинг сообщения: 1
Также придерживаюсь мысли, что в большинстве случаев корректный вариант - это короткое нажатие по отпусканию, длинное по заложенному времени.
Вариант реакции "короткое нажатие" по нажатию кнопки имеет место быть только в случае, когда длинное нажатие или даблклик развивают событие по короткому нажатию.
Как в той же винде. Клик по иконке перемещает на неё фокус - это типовое действие. А потом второй клик "добивает" иконку, запуская её.
И да, по нажатию кнопки действительно, можно издать какой то бип, что бы пользователь понял, что его услышали. Тогда по отпусканию выполнить действие, уже без бипа. Или по таймауту уже бипнуть второй раз и выполнить действие по длинному нажатию.

_________________
Часы на TFT-дисплее с тачскрином
Метеодатчик с дисплеем
Простой портативный FM-приемник
Домофонный мультиключ

 
                               Лучшая благодарность ->
[+]


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Чт май 06, 2021 11:02:14 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 219
Откуда: Тула
Рейтинг сообщения: 0
Тайминги антидребезга, определения удержания, паузы двойного нажатия ещё зависят от типа применённых кнопок. Ну и конечно присутствует известная доля субъективизма. За долгое время использование стандартных тактовых кнопок прижились такие тайминги:
- антидребезг 5-15 мс.
- время определения двойного нажатия: 200-340мс
- удержание: 350-900мс.

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

Пример кода для одной кнопки:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Чт май 06, 2021 11:32:19 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Всем спасибо за мнения, соглашусь с большинством: реакция по отпусканию предпочтительнее.
С реализацией алгоритма проблем нет.

(KeyS_Data) переменная
7 bit - факт нажатия кнопки.
6 bit - LONG1 удержание нажатой кнопки.
5 bit - LONG2 удержание нажатой кнопки.
4 бит - Кнопка нажата/отжата.
3 бит -\
2 бит -|
1 бит -| code KEY
0 бит -/

Не совсем понятно, зачем нужен 7-й бит? Есть же 4-й и более младшие, по-моему, однозначно сообщающие о том, что нажато или отжато.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки: короткое и долгое нажатие. Наиболее удобный алго
СообщениеДобавлено: Пт май 07, 2021 15:04:33 
Открыл глаза

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Пн янв 08, 2007 18:23:08
Сообщений: 40
Рейтинг сообщения: 0
Привет КотаФеям.

4 бит устанавливается и сбрасывается подпрограммой скана кнопок.
7 бит а также 6 и 5 биты сбрасывают при необходимости подпрограммы использующие ввод кнопок.
У меня некоторые подпрограммы следят за битами 6,5,4 и не учитывают факт отжатия кнопок.
7 бит можно считать как достоверное короткое нажатие.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y