Супер Кнопка

Блок распознает различные нажатия кнопки

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#1

Сообщение Dryundel » 15.03.2019{, 20:33}

Блок "Супер Кнопка Click"
1.jpg
1.jpg (5.31 КБ) 9524 просмотра
Супер_кнопка__Click__v.1.0_(CODE).ubi
(158.62 КБ) 415 скачиваний
.
Актуальная версия "Супер Кнопки Click" находится ЗДЕСЬ
.
Кнопка "Click" v.1.0 умеет распознавать:
Одиночное нажатие
Двойное нажатие
Тройное нажатие
Удержание
Для распознавания удержания блок имеет два выхода LongStart - дает одиночный короткий импульс когда удержание распознано и Long - собственно само удержание, на нем высокий уровень (логическая 1) присутствует до конца удержания (отпускания)

В этой теме будет представлена серия блоков для такой элементарной детали как кнопка.
Распознавание различных нажатий кнопки весьма деликатная тема. На форуме не раз предпринимались попытки сделать добротный многофункциональный блок, для этой задачи. Некоторые работают, другие не очень.

Да и речь пойдет не просто о кнопке, но и о самой библиотеке, которая предоставляет весьма обширный фунционал для всего лишь кнопки. Большего и придумать даже сложно.

В других блоках будет и расознавание нескольких аналоговых кнопок на одном пине со всем функионалом нажатий и распознавание количества множественных нажатий и инкрементальный функционал. Все блоки сделаны на основе библиотеки GyverButton

Архив всех блоков из этой темы:
Супер Кнопки от Dryundl.rar
(133.81 КБ) 322 скачивания
Обновлен 17.12.19
В архиве:
- Супер_кнопка__Click__v.1.0
- Супер_кнопка_10Butt(A)_v.1.0
- Супер_Кнопка_Замок_v.1.1
- Супер_кнопка_Test
- Супер Кнопка Ввод числа
- Супер кнопка Количество нажатий

Бородатых дядек с возгласами типа "Использовать библиотеку для одной кнопки это бред!" попрошу пока воздержаться.
Ибо тема будет полезна по большей части новичкам и тем кто с программным кодом на Вы.
Последний раз редактировалось Dryundel 15.01.2021{, 15:55}, всего редактировалось 17 раз.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Супер Кнопка

#2

Сообщение aidar_i » 15.03.2019{, 20:45}

Хорошо! Будем испытывать!

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Супер Кнопка

#3

Сообщение rw6cm » 16.03.2019{, 13:42}

Dryundel,
Библиотека свежее есть
Win10-64, FLProg (portable)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#4

Сообщение Dryundel » 17.03.2019{, 02:45}

Итак начнем.
Данная библиотека, это отличный конструктор кнопок на любой вкус. Работа с ней будет особенно полезна новичкам
Для начала о самой библиотеке.
GyverButton- предназначена для многофункциональной отработки нажатия кнопки.
Ее возможности:
- Работа с нормально замкнутыми и нормально разомкнутыми кнопками
- Работа с подключением PULL_UP и PULL_DOWN
- Опрос кнопки с программным антидребезгом контактов
- Настраиваемое время антидребезга
- Отработка нажатия, удерживания, отпускания, клика по кнопке
- Настраиваемый таймаут удержания
- Отработка одиночного, двойного и тройного нажатия (вынесено отдельно)
- Отработка любого количества нажатий кнопки (функция возвращает количество нажатий)
- Настраиваемый таймаут повторного нажатия/удержания
- Функция изменения значения переменной с заданным шагом и заданным интервалом по времени
- Возможность опрашивать не кнопку, а напрямую давать величину (все возможности библиотеки для матричных и резистивных клавиатур)
Ну и для того что бы потестить данные функции...

Супер кнопка Test (Конструктор)
2019-03-17_023806.jpg
2019-03-17_023806.jpg (12.11 КБ) 4993 просмотра
Супер_кнопка_Test_(CODE).ubi
(185.32 КБ) 185 скачиваний
Конечно же данный блок не для использования в проектах, но как тестер библиотеки, а так же как мастер-конструктор будет весьма полезен.
Скачиваем, тестим.
Последний раз редактировалось Dryundel 07.09.2019{, 11:36}, всего редактировалось 3 раза.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#5

Сообщение Dryundel » 18.03.2019{, 16:28}

Библиотека GyverButton поддерживает размещение нескольких кнопок на аналоговом входе. Инициализировать такие кнопки и обеспечивать их многофунциональность в блоке 10Butt(A) совсем не сложно. Добавить нужный функционал и необходимые выходы под силу даже новичку.
10 кнопок на одном аналоговом входе
3.jpg
Супер_кнопка_10Butt(A)_v.1.0_(CODE).ubi
(300.18 КБ) 174 скачивания
Debounce_Analog_v.2.0_(CODE).ubi
(17.05 КБ) 164 скачивания
Описание 10Butt(A):
Блок распозает 10 кнопок на одном аналоговом пине, отслеживает различную последовательность и длительность подачи высокого уровня (логической "1") на каждой из кнопок и выдает сигнал на соответствующий выход. Другими словами, применительно к кнопке, подключенной к выходу in - отслеживает различные нажатия кнопки, соответствующие выходам блока.
СпойлерПоказать
Выходы блока:
Click(Х) - Короткий клик на соответствующей кнопке
Long(Х) - Удержание Соответствующей кнопки
None - Ни одна кнопка не нажата
En - Разрешение на работу блока

Параметры пользователя:
Timeout - Установка таймаута ожидания удержания (ms)
ValBatt(Х) - Значение АЦП для соответствующей кнопки

Ограничения:
1) Значения АЦП не должно быть меньше 5
2) Шаг значений АЦП для разных кнопок не должен быть меньше 10
3) Отслеживание нажатия сразу двух или более кнопок не поддерживается
Debounce Analog - служит для защиты от ложных импульсов при переключении контактов. Схож с блоком Bounce, только для аналогового входа, когда например к одному аналоговуму входу подключено несколько кнопок.
Принцип действия основан на задержке передачи значения со входа на выход, пропуская время "дребезга".
Блок не просто дает задержку, а ждет окончания дребезга и если в течении таймаута (параметр Time) не произошло изменений подает входное значение на выход.
Последний раз редактировалось Dryundel 28.03.2019{, 10:31}, всего редактировалось 5 раз.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

Супер Кнопка

#6

Сообщение nalnik » 18.03.2019{, 16:38}

Dryundel - Вы ДОСТАЛИ.
Не верю ------ 10 кнопок через 1К -нормально работать не будут.
Хватит Вам проектировать в Протеусе - спаяйте.
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#7

Сообщение Dryundel » 18.03.2019{, 16:44}

nalnik писал(а):
18.03.2019{, 16:38}
Не верю ------ 10 кнопок через 1К -нормально работать не будут.
Попробуй и удивись. :)

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

Супер Кнопка

#8

Сообщение nalnik » 18.03.2019{, 17:45}

Dryundel писал(а):
18.03.2019{, 16:44}
Попробуй и удивись.
На UNO, без внешней опоры -- на один аналоговый вход - десять кнопок через 1000 Ом -- ? :smile250:
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#9

Сообщение Dryundel » 18.03.2019{, 18:50}

nalnik писал(а):
18.03.2019{, 16:38}
Хватит Вам проектировать в Протеусе - спаяйте.
10 кнопок не нашел. 8 хватит? Собрал на соплях по быстрому.
Смотри видео
СпойлерПоказать
4.jpg
ЗЫ: Незачто. :)

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Супер Кнопка

#10

Сообщение Phazz » 18.03.2019{, 19:19}

А что на ардуино так трудно измерить с точностью в 0,25 вольт? Что за скепсис?

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Супер Кнопка

#11

Сообщение KulibinOrsk » 18.03.2019{, 19:20}

Dryundel, а у тебя что все схемы работают на столе ? )))
Ты представь ситуацию - пром.участок на котором различные наводки, в том числе от эл.двигателей по 15кВт или трансформатор на 1кВт и недалеко провода идут на пульт оператора. И как ты будешь ловить разницу в 0.1В напряжения ?
Схема рабочая, вроде особо никто ж не спорит, но тебе предложили сделать по уму. Собрать правильные делители. Вот тебе в помощь калькулятор: https://cxemok.ru/kalkuliatory/296-deli ... yator.html
Считай из расчета что на каждое нажатие должно приходиться 0.5В (5В делим на 10 участков и получаем = 0.5В)
Сделай, пропиши и выложи в качестве исправлений ошибок и чтобы молодняк не напоролся на такие протеус-настольные схемы.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Супер Кнопка

#12

Сообщение Phazz » 18.03.2019{, 19:24}

KulibinOrsk, а если на атомной станции? А? Так и армагеддон устроить не долго. Вы о чем таком говорите? Это решение для домашних поделок, а вы ардуино в космос запускать собрались.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Супер Кнопка

#13

Сообщение KulibinOrsk » 18.03.2019{, 19:41}

Phazz, я как то уже писал, что ардуино, а если быть точнее модули на контроллерах атмел работают в пром. оборудовании с 2008 года и все отлично. Поэтому не нужно недооценивать атмеловские контроллеры.
Насчет конкретного применения именно аналогового входа в качестве множества кнопок то безусловно это настольная версия, но лучше если человек сразу поймет свой косяк и на будущее будет стремиться делать правильно. Нежели сейчас по типу - да и хрен с ним по 0.1В на столе же работает. А через год соберет поделку с проводами около 3-х метров пустит мимо приборов и будет думать почему у него лажа идет...

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

Супер Кнопка

#14

Сообщение com » 18.03.2019{, 19:49}

Не убирайте грабли, нам так интереснее :)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#15

Сообщение Dryundel » 19.03.2019{, 21:32}

Супер Кнопка Замок v.1.1
11.jpg
11.jpg (7.08 КБ) 4469 просмотров
Супер_Кнопка_Замок_v.1.1_(CODE).ubi
(232.74 КБ) 158 скачиваний
О версии 1.1
- Оптимизирована под библиотеку GyverButton 2.12
- Исправлена ошибка таймаута ввода кода
- Появилась возможность ввода "0", это 10-ти кратный клик
- Веден запрет на действие при нажатии более 10 кликов подряд (ничего не происходит)
- Добавлен сброс вводимого кода при попытке ввести 10-й знак
- Добавлен сигнал тревоги при попытке ввести 10-й знак.
- Добавлена 5 секундная задержка на открывание при правильно введеном коде.
- Добавлена возможность предустановки мастер-кода
СпойлерПоказать
ButtLock1.1 - Это электронный сейфовый замок на одной кнопке. Ввод цифр осуществляется последовательностью коротких нажатий (кликов) с паузами. Колличество кликов подряд ограничено 10-ю. При 10 клике вводится "0". При 11-ти и больше кликов подряд, ничего не происходит. Код к замку может быть задан до 9 знаков. При попытке ввести 10-й знак, набираемый код сбрасывеется, это сопровождается импульсом на выход Alarm (Тревога). Готовность к вводу очередной цифры сопровождается коротким импульсом на выходе Enter, что позволяет ввести звуковое сопровождение ввода. Время ввода кода ограничивается параметром Time (По умолчанию - 1 минута), отсчитывается с момента начала ввода первого знака. При превышении времени ввода, набираемый код сбрасывается и это сопровождается импульсом на выходе Invalid (Неверный код). Неправильно вводимый код можно принудительно сбросить длинным нажатием (удержанием кнопки). При совпадении набираемого кода с предустановленным, стартует 5-секундная задержка. Если в течении 5 секунд правильный код не изменился, на выход Lock поступает короткий импульс (Открывание), введеный код в этот момент сбрасывается. Есть возможность добавить секретный мастер-код для служебного пользования. По умолчанию мастер- код не действует т.к. состоит из 10 знаков и не может быть введен с кнопки по причине ограничения ввода.

Входы блока:
in - подключается к кнопке.
Code - секретный код

Выходы блока:
outCode - Вывод вводимого кода
Lock - Сигнал совпадения кода "OPEN"
Enter - сигнал событий (ввод числа / сброс)
Invalid - Неверный код (сигнал по истечении отведенного времени)
Alarm - Сигнал тревоги при вводе 10-го знака



Параметры пользователя:
Timeout - Установка таймаута ожидания удержания (ms)
ClickTime - Таймаут между кликами
Time - Отведенное время для ввода кода (ms) (по умолчанию 1 мин)
MasterCode - Мастер-код


На основе библиотеки GyverButton https://github.com/AlexGyver/GyverLibs
Последний раз редактировалось Dryundel 10.08.2019{, 17:01}, всего редактировалось 2 раза.

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

Супер Кнопка

#16

Сообщение krom23 » 19.03.2019{, 21:46}

Dryundel, сделайте пожалуйста аналоговый блок на пять кнопок, а то 10(и) кнопочный очень громоздкий.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#17

Сообщение Dryundel » 19.03.2019{, 21:56}

krom23 писал(а):
19.03.2019{, 21:46}
Dryundel, сделайте пожалуйста аналоговый блок на пять кнопок, а то 10(и) кнопочный очень громоздкий.
Да я же специально все расписываю. Исправить 10 входовой на 5-ти - дело 10 минут даже для новичка. Правой кнопкой по блоку и редактировать. Удаляете лишние выходы в "Выходы блока" "Параметры" Loop и Declare и все. И получаете блок на 2,3,4....9 кнопок.
Если уж не получится пишите в личку. :)
При желании можно для каждой кнопки в отдельности добавить двойной, тройной клик. Воспользуйтесь блоком Супер кнопка Test как конструктором. (см. выше)

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

Супер Кнопка

#18

Сообщение krom23 » 19.03.2019{, 22:21}

Dryundel писал(а):
19.03.2019{, 21:56}
Да я же специально все расписываю.
Опять всё самому, да самому :D

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Супер Кнопка

#19

Сообщение Dryundel » 20.03.2019{, 15:38}

Вышла свежая версия библиотеки GyverButton 2.12
Устранен небольшой баг. Спасибо автору за оперативность.

Roman9
Рядовой
Сообщения: 25
Зарегистрирован: 03.02.2019{, 11:47}
Репутация: 0
Имя: Роман

Супер Кнопка

#20

Сообщение Roman9 » 20.03.2019{, 21:05}

Dryundel писал(а):
20.03.2019{, 15:38}
Вышла свежая версия библиотеки GyverButton 2.12
Устранен небольшой баг. Спасибо автору за оперативность.
И спасибо Вам за блоки. ) Иногда это может пригодиться.

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»