Небольшое развитие алгоритма опроса кнопки с подавлением дребезга. Отрабатываем два вида кликов - длинный и короткий. Проект из ролика disk.yandex.ru... На развитие канала yoomoney.ru/to... все ролики серии • Программируем микрокон...
Спасибо за отличный пример. Взял на вооружение. Но появилась потребность отследить еще и длинное одновременное нажатие обеих кнопок. Если не затруднит, подскажите как это реализовать из вашего примера.
@@andreyfrolov301 В теории то все понятно. только вот счетчик начинает считать от else. вот и не могу понять, как тогда отслеживать нажатие обеих кнопок, да что бы еще и прежние режимы сохранились. Может бросите кусочек кода начинающему, а дальше сам буду разбираться. Был бы очень признателен.
@@andreyfrolov301 Что то я не знаю. Все возможные, на мой взгляд, комбинации перепробовал. Либо вообще не работает, либо срабатывает один из диодов другой кнопки. не могу я выдавить 5 комбинаций из этого примера 2х кнопок. Не говоря уже о 6и.
Получилось, хоть и не совсем грамотно, но из вашего примера на 2х кнопках получил 6 разных событий. У меня их 3. Получаем 12 событий на 3 кнопки, практически без возможности ложных срабатываний. Спасибо за пример.
@@andreyfrolov301 С его вдруг не будет???? Будет, еще как... Конечно, я описал не весь алгоритм, а только закинул удочку))), ветки if нужно переставить наоборот, тогда , при длительном нажатии button_clk будет всегда равняться 101, если button_count досчитает до 60
я немного по другому пишу.Задейсвую таймеру.У меня вопрос как лучше что бы сработала кнопка при нажатии или отжатии?У меня есть подобные програмки но они немного по другому сделаны.
Дядя Андрей не поможете сделать инкремент из этого кода только в обратку interrupt [TIM1_COMPA] void timer1_compa_isr(void) { cloc[0] = tik; cloc[1] = des_tik; cloc[2] = sec; cloc[3] = des_sec; cloc[4] = min; cloc[5] = des_min; tik++; if (tik==10) {tik=0; des_tik++;} if (des_tik==10) {des_tik=0; sec++;} if (sec==10) {sec=0; des_sec++;} if (des_sec==6) {des_sec=0; min++;} if (min==10) {min=0; des_min++;} if (des_min==10) {des_min=0;} } это из программы секундомера на шести семисегментниках,у меня ни как не получается
@Svetlana V Здравствуйте,если б я знал как и как проще не спрашивал бы)))яж любитель,попытался вкорячить ваш код,не выходит что-то у меня,у меня код вижен
@Svetlana V ругался на переменные,я переделал,потом ругался на знак в условий>,так в код вижене походу нельзя,я переправил на >=,потом заработало на три цифры только и никоректно,в общем я не знаю что делать дальше:(
@Svetlana V Спасибо огромное за вашу помощь и доброту,переименовал как вы сказали переменные в тип int8_t,поменял unsigned на signed и заработало,но только если если все цифры в нулях то считает уже в минус девяток,а мне нужно при нажатий кнопки в плюс набирать время,а потом при нажатий другой кнопки что бы обратно время отсчитывалось и на нулях таймер останавливался,ну тут я сам виноват не сказал вам)),попробую тут сам разобраться,надеюсь не побеспокою вас больше)),еще раз спасибо