ARDUINO Расширение возможностей библиотеки GyverButton

Dorfman

✩✩✩✩✩✩✩
29 Мар 2020
13
1
Ukraine
johnnsoft.space
Шалом! Наткнулся на проблему (а думаю, многие сталкивались), когда в проекте много тактовых кнопок, и часть из них должна быть триггерными (то есть обычные тактовые кнопки при определённых условиях должны работать как "первый клик - вкл, второй клик - выкл). И к каждой кнопе городить код с флажками - уже как-то несолидно, да и отдельную функцию тоже заводить не всегда удобно: при большом количестве таких кнопок начинаешь путаться... Можно ли расширить данную библиотеку для такого необходимого функционала?
 

Fleshdeck

★★★✩✩✩✩
19 Янв 2019
286
135
Киев
@Dorfman, ну допиши в библиотеку кусок кода который при клике меняет значение переменной boolean, и вызывай его
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
741
158
так это всю библиотеку надо перелопачивать и добавлять флаг траггерности в качестве аргумента при создании экземпляра кнопки для разных типов кнопок
 

Dorfman

✩✩✩✩✩✩✩
29 Мар 2020
13
1
Ukraine
johnnsoft.space
@Dorfman, а приведи пример для чего это необходимо. не гипотетический. а реальный.
Я сейчас доделываю световой пульт, там 6 зон клавиатур (ну, там, быстрый выбор сцены, быстрый выбор эффектов, работа с DMX, управляющие кнопки, дублирующие энкодер, находящийся в меню, ещё зона управления ws 2812 и т.д.). И, как говорится, в семье не без урода - (хоть я и понаставил везде шифраторов, но мне не хватает ног даже с Arduino Due) - почти в каждой зоне есть по нескольку триггерных кнопок. Пожалуйста, яркий пример. И если я изначально объявлю эти батоны триггерными, мне не придётся потом через шифраторы отлавливать, где я в скетче флажок провтыкал. Схема (слева) - только одна из клавиатур, на которой 4 триггерных кнопки будут дополнительно.
schmatic.pngCOVER_2020-Mar-27_06-51-34PM-000_CustomizedView28360817080.png
 
Последнее редактирование:

Dorfman

✩✩✩✩✩✩✩
29 Мар 2020
13
1
Ukraine
johnnsoft.space
так это всю библиотеку надо перелопачивать и добавлять флаг траггерности в качестве аргумента при создании экземпляра кнопки для разных типов кнопок
А зачем разные? Тактовая кнопка - она и в Африке тактовая кнопка. Нормально размокнутая или замкнутая - нафиг не недо. Есть пуллап и НЕпуллап (управление по 0 или 1). Или я чего-то недопонял?
 

Эдуард Анисимов

★★★★✩✩✩
23 Сен 2019
908
268
54
Марий-Эл
Решение на вскидку. Создайте массив или структуру, которая будет проецировать ваше поле клавиатуры в память контроллера. Те кнопки, которые не триггерные в этом массиве сбрасываются после прочтения. Те, которые триггерные, меняют своё состояние только после нажатия кнопки.
Ещё эту проблему можно решить 100500 способами.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
741
158
Или я чего-то недопонял?
ты не понял

там есть вариации кнопок
я вчера использовал одну физическую кнопку и она выполняет 2 функции
просто клик
и 1 клик с удержанием переключает там режим алгоритма

так вот собственно можно один раз нажать и отпустить - кнопка залипнет
а что если я хочу залипнуть при двойном нажатии, а одинарное мне не надо?
а в библиотеке есть реакция аж на 3 быстрых нажатия и это 3 разные функции
и там еще другие есть и во всех них надо будет заталкивать режим фиксации
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,712
422
Москва
Опять же это какое то узкоспециализированная для конкретного случая нужда. мне пока такое не пригодилось ни разу. так же как 3 клика, 4, а уж тем более 5. Максимум двойной клик, и то я стараюсь его избегать. Клик, удержание. Одной кнопкой я показывал человеку как регулировать яркость светодиодной ленты. И даже без библиотеки кажется..
Библиотеки это универсальность, универсальность это увеличенный размер. В результате нехватка места.
 

Dorfman

✩✩✩✩✩✩✩
29 Мар 2020
13
1
Ukraine
johnnsoft.space
Опять же это какое то узкоспециализированная для конкретного случая
На счёт узкоспециализированной нужды я могу поспорить. Триггерные кнопки встречаются в каждой второй самоделке. И уверен, встречались бы в каждой, если бы запретили продавать тумблеры или кнопки с фиксацией ))
Вот уж что узко специализировано, так это тройное нажатие ;)
 
Последнее редактирование: