Тёмный
No video :(

AVR 50# Кнопка. Длинный и короткий клик. 

Andrey Frolov
Подписаться 12 тыс.
Просмотров 4,7 тыс.
50% 1

Небольшое развитие алгоритма опроса кнопки с подавлением дребезга. Отрабатываем два вида кликов - длинный и короткий.
Проект из ролика disk.yandex.ru...
На развитие канала yoomoney.ru/to...
все ролики серии • Программируем микрокон...

Опубликовано:

 

29 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 26   
@user-ov4dh7kc5c
@user-ov4dh7kc5c Год назад
Спасибо! Просто, логично, продумано. :)
@reks-iy4cf
@reks-iy4cf Год назад
Спасибо, отличные уроки!
@user-tu8hk1iz6s
@user-tu8hk1iz6s 3 года назад
Просто СУПЕР! Андрей, огромное спасибо за пример!
@glimpse8144
@glimpse8144 3 года назад
Будет интересно узнать про двойное нажатие кнопки
@l-8973
@l-8973 2 года назад
Спасибо за отличный пример. Взял на вооружение. Но появилась потребность отследить еще и длинное одновременное нажатие обеих кнопок. Если не затруднит, подскажите как это реализовать из вашего примера.
@andreyfrolov301
@andreyfrolov301 2 года назад
если обе кнопки зажаты считайте, если одна не не жата сброс если досчитали до порога - отработка всё тоже самое только событие другое
@l-8973
@l-8973 2 года назад
@@andreyfrolov301 В теории то все понятно. только вот счетчик начинает считать от else. вот и не могу понять, как тогда отслеживать нажатие обеих кнопок, да что бы еще и прежние режимы сохранились. Может бросите кусочек кода начинающему, а дальше сам буду разбираться. Был бы очень признателен.
@andreyfrolov301
@andreyfrolov301 2 года назад
@@l-8973 так вы заведите новое условие. новый счетчик и тд. а старые пусть свое считают :)
@l-8973
@l-8973 2 года назад
@@andreyfrolov301 Что то я не знаю. Все возможные, на мой взгляд, комбинации перепробовал. Либо вообще не работает, либо срабатывает один из диодов другой кнопки. не могу я выдавить 5 комбинаций из этого примера 2х кнопок. Не говоря уже о 6и.
@l-8973
@l-8973 2 года назад
Получилось, хоть и не совсем грамотно, но из вашего примера на 2х кнопках получил 6 разных событий. У меня их 3. Получаем 12 событий на 3 кнопки, практически без возможности ложных срабатываний. Спасибо за пример.
@AlexRootx
@AlexRootx 3 года назад
делается проще: if (button_count==60) button_clk=101 else if (button_count>5) button_clk=1
@andreyfrolov301
@andreyfrolov301 3 года назад
чем проще тем лучше но это работать не будет :)
@AlexRootx
@AlexRootx 3 года назад
@@andreyfrolov301 С его вдруг не будет???? Будет, еще как... Конечно, я описал не весь алгоритм, а только закинул удочку))), ветки if нужно переставить наоборот, тогда , при длительном нажатии button_clk будет всегда равняться 101, если button_count досчитает до 60
@ivanrusev2270
@ivanrusev2270 Год назад
я немного по другому пишу.Задейсвую таймеру.У меня вопрос как лучше что бы сработала кнопка при нажатии или отжатии?У меня есть подобные програмки но они немного по другому сделаны.
@AlexHerman-qj3pi
@AlexHerman-qj3pi 3 года назад
Сохраню себе.
@sergeygubskiy4931
@sergeygubskiy4931 Год назад
Какая частота контроллера, #define F_CPU 8000000UL//8 ?
@Johann75
@Johann75 8 месяцев назад
А дребезга контактов тут нет?
@jone2409
@jone2409 Год назад
Привет 🖐. Хотел включить светодиод с двумя кнопками If (( ~PINB & (1
@andreyfrolov301
@andreyfrolov301 Год назад
в условии и =&&
@jone2409
@jone2409 Год назад
@@andreyfrolov301 🤦‍♂️я с это мучаюсь больше месяца. Спасибо вам.
@andreyfrolov301
@andreyfrolov301 Год назад
@@jone2409 ну это частая ошибка, если что-то не работает когда должно работать проверяйте условия.
@antongladkov9826
@antongladkov9826 2 года назад
Дядя Андрей не поможете сделать инкремент из этого кода только в обратку 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;} } это из программы секундомера на шести семисегментниках,у меня ни как не получается
@andreyfrolov301
@andreyfrolov301 2 года назад
планирую ролик про алгоритм отсчета времени, когда нибудь сделаю.
@antongladkov9826
@antongladkov9826 2 года назад
@Svetlana V Здравствуйте,если б я знал как и как проще не спрашивал бы)))яж любитель,попытался вкорячить ваш код,не выходит что-то у меня,у меня код вижен
@antongladkov9826
@antongladkov9826 2 года назад
@Svetlana V ругался на переменные,я переделал,потом ругался на знак в условий>,так в код вижене походу нельзя,я переправил на >=,потом заработало на три цифры только и никоректно,в общем я не знаю что делать дальше:(
@antongladkov9826
@antongladkov9826 2 года назад
@Svetlana V Спасибо огромное за вашу помощь и доброту,переименовал как вы сказали переменные в тип int8_t,поменял unsigned на signed и заработало,но только если если все цифры в нулях то считает уже в минус девяток,а мне нужно при нажатий кнопки в плюс набирать время,а потом при нажатий другой кнопки что бы обратно время отсчитывалось и на нулях таймер останавливался,ну тут я сам виноват не сказал вам)),попробую тут сам разобраться,надеюсь не побеспокою вас больше)),еще раз спасибо
Далее
Микро 80. Видеокарта. #4
26:58
Просмотров 58 тыс.
WELCOME TO THE FAMILY, MOE! (Brawl Stars Animation)
00:40
WELCOME TO THE FAMILY, MOE! (Brawl Stars Animation)
00:40