Страница 1 из 3

Супер Кнопка

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

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

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

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

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

Бородатых дядек с возгласами типа "Использовать библиотеку для одной кнопки это бред!" попрошу пока воздержаться.
Ибо тема будет полезна по большей части новичкам и тем кто с программным кодом на Вы.

Супер Кнопка

Добавлено: 15 мар 2019, 20:45
aidar_i
Хорошо! Будем испытывать!

Супер Кнопка

Добавлено: 16 мар 2019, 13:42
rw6cm
[ref]Dryundel[/ref],
Библиотека свежее есть

Супер Кнопка

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

Супер кнопка Test (Конструктор)
2019-03-17_023806.jpg
Супер_кнопка_Test_(CODE).ubi
Конечно же данный блок не для использования в проектах, но как тестер библиотеки, а так же как мастер-конструктор будет весьма полезен.
Скачиваем, тестим.

Супер Кнопка

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

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

Ограничения:
1) Значения АЦП не должно быть меньше 5
2) Шаг значений АЦП для разных кнопок не должен быть меньше 10
3) Отслеживание нажатия сразу двух или более кнопок не поддерживается[/spoiler]

Debounce Analog - служит для защиты от ложных импульсов при переключении контактов. Схож с блоком Bounce, только для аналогового входа, когда например к одному аналоговуму входу подключено несколько кнопок.
Принцип действия основан на задержке передачи значения со входа на выход, пропуская время "дребезга".
Блок не просто дает задержку, а ждет окончания дребезга и если в течении таймаута (параметр Time) не произошло изменений подает входное значение на выход.

Супер Кнопка

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

Супер Кнопка

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

Супер Кнопка

Добавлено: 18 мар 2019, 17:45
nalnik
Dryundel писал(а): 18 мар 2019, 16:44Попробуй и удивись.
На UNO, без внешней опоры -- на один аналоговый вход - десять кнопок через 1000 Ом -- ? :smile250:

Супер Кнопка

Добавлено: 18 мар 2019, 18:50
Dryundel
nalnik писал(а): 18 мар 2019, 16:38Хватит Вам проектировать в Протеусе - спаяйте.
10 кнопок не нашел. 8 хватит? Собрал на соплях по быстрому.
Смотри видео https://youtu.be/ag-INk_yFpg
[spoiler]
4.jpg
[/spoiler]

ЗЫ: Незачто. :)

Супер Кнопка

Добавлено: 18 мар 2019, 19:19
Phazz
А что на ардуино так трудно измерить с точностью в 0,25 вольт? Что за скепсис?

Супер Кнопка

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

Супер Кнопка

Добавлено: 18 мар 2019, 19:24
Phazz
[ref]KulibinOrsk[/ref], а если на атомной станции? А? Так и армагеддон устроить не долго. Вы о чем таком говорите? Это решение для домашних поделок, а вы ардуино в космос запускать собрались.

Супер Кнопка

Добавлено: 18 мар 2019, 19:41
KulibinOrsk
[ref=#404040]Phazz[/ref], я как то уже писал, что ардуино, а если быть точнее модули на контроллерах атмел работают в пром. оборудовании с 2008 года и все отлично. Поэтому не нужно недооценивать атмеловские контроллеры.
Насчет конкретного применения именно аналогового входа в качестве множества кнопок то безусловно это настольная версия, но лучше если человек сразу поймет свой косяк и на будущее будет стремиться делать правильно. Нежели сейчас по типу - да и хрен с ним по 0.1В на столе же работает. А через год соберет поделку с проводами около 3-х метров пустит мимо приборов и будет думать почему у него лажа идет...

Супер Кнопка

Добавлено: 18 мар 2019, 19:49
com
Не убирайте грабли, нам так интереснее :)

Супер Кнопка

Добавлено: 19 мар 2019, 21:32
Dryundel
Супер Кнопка Замок v.1.1
11.jpg
Супер_Кнопка_Замок_v.1.1_(CODE).ubi
О версии 1.1
- Оптимизирована под библиотеку GyverButton 2.12
- Исправлена ошибка таймаута ввода кода
- Появилась возможность ввода "0", это 10-ти кратный клик
- Веден запрет на действие при нажатии более 10 кликов подряд (ничего не происходит)
- Добавлен сброс вводимого кода при попытке ввести 10-й знак
- Добавлен сигнал тревоги при попытке ввести 10-й знак.
- Добавлена 5 секундная задержка на открывание при правильно введеном коде.
- Добавлена возможность предустановки мастер-кода

[spoiler]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
[/spoiler]

Супер Кнопка

Добавлено: 19 мар 2019, 21:46
krom23
[ref]Dryundel[/ref], сделайте пожалуйста аналоговый блок на пять кнопок, а то 10(и) кнопочный очень громоздкий.

Супер Кнопка

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

Супер Кнопка

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

Супер Кнопка

Добавлено: 20 мар 2019, 15:38
Dryundel
Вышла свежая версия библиотеки GyverButton 2.12
Устранен небольшой баг. Спасибо автору за оперативность.

Супер Кнопка

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