Привет Всем, ВСех с Новым годом, у меня такой вопрос, по кнопкам: 1. как сделать так, чтобы контроллер различал когда кнопкой кликнули, а когда нажали и задержали 2. как сделать так, чтобы при кликанье контроллер делал одно, а при нажатие и удерживание другое, причём в зависимости от количество кликов или времени удержания, выполнялись разные функции т.е. Загрузился контроллер, ждёт действий от меня, я в свою очередь нажал трижды он мне включил подсветку на десять сикунд, далее, я нажал и зажал на секунду кнопку, он мне включил свет на 30 секунд, далее я опять нажал три раза кнопку, но не стал ее отпускать а зажал на секунду и он мне включил туже подсветку но не на 10 секунд, а уже окончательно, пока я не зажму кнопку на пару секунд. Зачем. Задумал штуку в авто сделать, по управлению светом, в основном внешним, и управлять более, чем одной кнопкой не очень удобно, мне хотябы просто накидать примерный скетчик, и самое интересное это и менно момент с нажал "тир раза и задержал" можно ссылки где такое уже реализованно или похожее, просто сколько не рылся в сети, что то не как не натыкался
Есть два способа: за деньги или разобраться самостоятельно. Есть третий. Сильно попросить и кто-то в доказательство своей крутости сделает это для Вас. Такое тоже случается.
есть готовые библиотеки для работы с кнопками ClickButton OneButton Button посмотрите и попробуйте примеры - найдёте для себя решения там есть и длительное нажатие, тройной и двойной клик
Простейший способ. 1. Ждет нажатия типа вот так (для случая если притянута к +): Код (C++): while (digitalRead(KEY)); 2. Засекает время и ждет отпускания: Код (C++): long timePress = millis(); while (!digitalRead(KEY)); timePress = millis() - timePress; 3. Определяет что делать в случае короткого нажатия и длинного: Код (C++): if (timePress < 500) { // если коротко } else { // если длинно } По аналогии доработать на разное время нажатий. Для подсчета количества схема чуть усложняется. Вотъ.
Ну я же говорил, что есть третий способ. Он, как обычно, не доделан. В том числе не в курсе, что время в Ардуино есть переменная типа unsigned long, как обычно раздает домашние задания, но появился же... И мне очень нравится - ставим лайки!
Счетчик, но самое главное определиться с паузами. Сколько ждать после нажатия кнопки? Она же не знает все на сегодня или еще будет. Плюс засекать время нажатия каждый раз, чтобы отличить короткие нажатия от длинных. В итоге получится массив данных где, например, первый элемент это число нажатий, остальные - длины каждого в мс. Затем обработчик этой азбуки Морзе с соответствующими событиями.
значится так получается, сначало я должен создать некое пояснение по кнопкам в отдельной фукцие, тоесть там будет описанно какое есть длинное нажатие, какое есть короткое, и потом в основной программе смотреть на кнопки и сравниваться с функцией написанной, потом следовательно как сравнились, поняли что это короткое нажатие, отправлять на выполнение задачи под ту или иную комбинацию кнопок?
Функция запускается при первом нажатии и работает подсчитывая нажатия и паузы до окончания ввода (определяемому по долгой паузе). В качестве результата получается массив типа такого: 5, 0, 0, 1, 0, 1 Где 5 - число нажатий, нули это короткие нажатия, единицы - длинные.