Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

Re: Обработка нажатия кнопки в AVR...

Вс янв 11, 2015 19:17:34

Потому что я не могу понять, как можно добавить тикающий таймер в обработчик нажатия кнопки... :(

Re: Обработка нажатия кнопки в AVR...

Вс янв 11, 2015 22:23:53

tantrum писал(а):Как сделать так, чтобы, например, при удерживании кнопки в течении 3х секунд, выполнялся иной участок кода, чем просто при кратковременном нажатии?

http://asis-kbr.ru/forum/viewtopic.php?f=13&t=173

Re: Обработка нажатия кнопки в AVR...

Вс янв 11, 2015 23:34:19

Кнопка ведь опрашивается по таймеру? тогда просто считаем нужное количество опросов когда кнопка нажата непрерывно и достигнув некоторого значения считаем что кнопка нажата более 3-х секунд.
Простой рассчет: если кнопку опрашиваем каждые 10мс, то для 3 секунд надо чтобы она была нажата на протяжении 3000мс/10мс = 300 опросов.

Re: Обработка нажатия кнопки в AVR...

Пн янв 12, 2015 11:52:09

А мне вот такой вариант больше понравился.
Авто повтор это и есть длительное нажатие.
http://www.kit-e.ru/articles/circuit/2007_08_170.php

Re: Обработка нажатия кнопки в AVR...

Пн янв 12, 2015 20:32:34

http://4personality.ru/wp-content/uploa ... %D1%83.jpg

Re: Обработка нажатия кнопки в AVR...

Пн янв 12, 2015 21:10:31

А если так, заводим переменную trig как только кнопка нажата if (!trig) {TCNT=0;count=0;trig=1;} и все в обработчике таймера скажем по совпадению увеличиваем count на 1 итак как только count=6 значит кнопка удерживается 3 сек. Как только кнопка отпущена trig=0;

Re: Обработка нажатия кнопки в AVR...

Пн янв 12, 2015 21:21:07

На языке Си можно, пожалуйста?

Re: Обработка нажатия кнопки в AVR...

Вт янв 13, 2015 08:26:28

Причём тут язык ? Вам уже всё разжевали (описали алгоритм), осталось только "в рот положить". Что ещё нужно ?
Если уж Вы так хорошо знаете Си, что просите конкретно для него, то перевести на него с человеческого не составит Вам никакого труда.

Re: Обработка нажатия кнопки в AVR...

Вт янв 13, 2015 23:28:51

Алгоритм ясен и так...
Я не знаю, как это программно реализуется

Re: Обработка нажатия кнопки в AVR...

Ср янв 14, 2015 05:24:20

вот тут на си и короткое и длинное нажатие есть в отдельной функции....
архивчик ну и как это выглядит видео работы

Re: Обработка нажатия кнопки в AVR...

Вт апр 14, 2015 00:37:54

Господа Коты!
С добрым Мяу!

Я тут мимо пробегал (ну так за рыбой :hunger: ), дай думаю зайду, увидел обсуждение по поводу кнопок, дребезга, нажатий.

Скажите ка, тема еще открыта?

Если еще нужно, могу выложить свой алгоритм.

Re: Обработка нажатия кнопки в AVR...

Вт апр 14, 2015 07:36:21

Вот тема по кнопкам - viewtopic.php?f=61&t=79801 Можете туда выкладывать.

Re: Обработка нажатия кнопки в AVR...

Пт апр 01, 2016 08:46:03

Друзья, только начинаю осваивать Си, так что не судите строго :) Помогите разобрать следующий код обрабатывающий кнопки:


Конкретно для чего там else. Если я правильно понимаю, если кнопка PIND.4 нажата то устанавливаем REQUIRED_TEMP = d, u = t_max, далее если PIND.2 нажата - прибавляем температуру, если PIND.3 то уменьшаем

Re: Обработка нажатия кнопки в AVR...

Пт апр 01, 2016 18:44:01

ужас ужас ужас. Да оно у тебя при нажатии на кнопку вжииик за 1 секунду 50 пунктов уйдёт.

раз уж использовать задержку, то я бы просто опрашивал бы кнопки каждые 100мс запоминал бы эти биты а потом строил бы условия с этими сохранёнными битами без опаски их изменения из-за дребезга. А каждый пятый или второй опрос выполнял бы действие соответствующее функции кнопки.
На каждую кнопку заведи циклический счётчик с периодом счёта 5 к примеру. Кнопка не нажата - сответствующий счётчик принудительно устанавливается в ноль. Иначе - считает в "+" в цикле самого опроса, когда он равен "1" -делаем соответствующее действие, иначе прокручиваемся дальше.
И никаких дополнитеьных действий по устранению дребезга не нужно - сам опрос с сохранением значения с интервалом 100мс гарантирует отсутствие влияния дребезга на результат.

Можно опрашивать с интервалом в 50мс и считать до 10...

Re: Обработка нажатия кнопки в AVR...

Ср фев 15, 2017 19:02:12

Всем привет. Такой вопрос: пишу программу для устройства в AVR Studio 4, на Си. Нужно сделать так, чтобы после включения можно было включить один из 4-х режимов работы отдельной кнопкой, при этом 5-я кнопка должна останавливать работу в этом режиме и возвращать устройство в исходное состояние. И вот проблема: как реализовать это программно? Помогите кто может... Исходники прикрепляю.
stend.zip
(5.67 KiB) Скачиваний: 168

Re: Обработка нажатия кнопки в AVR...

Ср фев 15, 2017 19:08:29

infinity19891 писал(а):Всем привет. Такой вопрос: пишу программу для устройства в AVR Studio 4, на Си. Нужно сделать так, чтобы после включения можно было включить один из 4-х режимов работы отдельной кнопкой, при этом 5-я кнопка должна останавливать работу в этом режиме и возвращать устройство в исходное состояние. И вот проблема: как реализовать это программно? Помогите кто может... Исходники прикрепляю.
stend.zip

Так кнопок 5 или 2?

Re: Обработка нажатия кнопки в AVR...

Ср фев 15, 2017 19:28:07

Так кнопок 5 или 2?

5 кнопок. 1 - режим 1, 2 - режим 2, 3 - режим 3, 4 - режим 4, 5 - отмена и сброс. Вообще, думал сначала сделать это в виде меню на 4 кнопках, но 3 года не писал ничего, многое подзабыл.

Re: Обработка нажатия кнопки в AVR...

Ср фев 15, 2017 19:59:56

При наличии индикации можно вообще на одной кнопке сделать.
Короткое нажатие перебирает режимы по одному, удержание в нажатом состоянии (>1c) возвращает в начальное состояние.

Re: Обработка нажатия кнопки в AVR...

Ср фев 15, 2017 20:02:49

infinity19891, а в чём, собссна, проблема то ?
Такую программищу написали, а обычный опрос вывода не можем сделать ? Бред какой-то... :dont_know:

Re: Обработка нажатия кнопки в AVR...

Чт фев 16, 2017 08:42:28

Аlex, в том и проблема, что забыл как кнопки опрашивать.
Тема закрыта