Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
fothomstir
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
1

Надо сделать 3 кнопки, правильно ли думаю..

04.11.2011, 19:25. Просмотров 2961. Ответов 5
Метки нет (Все метки)

Задумал вот сделать ерундовинку одну дитю к НГ (счетчик дней до нового года), хочу 3 кнопки (с прицелом на другую ерундовинку, для которой в общем тренируюсь/вспоминаю, что да как)

В общем мне нужно 3 кнопки, нажата (чисто конструктивно) может быть только одна в момент времени
Они не должны "дребезжать", плюс у них должно быть такое поведение:

- кнопка нажимается
- если она отпускается до истечения заданной паузы, то вызывается функция1
- если она удерживается дольше заданной паузы, одноразово! вызывается функция 2 (естественно функция1/2 у каждой кнопки разные)
- дальше надо отпустить кнопку и все начинается заново

Есть куча тини2313, на них и тренируюсь, порты могу выбирать какие захочу. Может из пушки по воробьям, но будет ли работать следующий алгоритм: 3 кнопки, с одной стороны к PortD 4/5/6 как выходы, с другой стороны к PortB 0/INT0 как вход

Прервыание INT0 настраивается на срабатывание 0 -> 1, в таймере на PortD 4/5/6 поочередно выставляется "1" (как часто?)
Если срабатывает прерывание int0 - останавливаем выдачу 1 в PortD 4/5/6, делаем паузу для антидребезга (это сколько по хорошему?)
Если на PortB 0 по прежнему "1" - значит не дребезг
Теперь настраиваем прерывание на 1 -> 0, засекаем время
В таймере проверяем - если прошла пауза (0.5 сек к примеру) и ничего не нажато - вызываем функцию 2, ставим какой-то флажек, что мол все, сработало
Если срабатывает прерывание при отпускании кнопки, то без флажка вызываем функцию 1, с флажком ничего не делаем
Настраиваем INT0 на 0 -> 1 и все начинается заново

Нигде я тут явно не туплю? Что не учел? Надо (наверное) ли подтягивать куда-то PortB.0?
Мы тут с женой тяпнули картошки/водки/селедки, так что я и так соображал мало в этих ваших контроллерах, а сейчас так вообще ;)
Ну или ткните в готовое (на Си) что-нибудь.. не цель изобрести велосипед, сделать и забыть (хотя понимать что делаешь конечно лучше)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 19:25
Ответы с готовыми решениями:

Надо сделать кнопки
В меню надо сделать кнопки помогите пожалуйста ( Сохранить , открыть файл , печать, создать новый...

Правильно ли я думаю?
Лицензионный антивирус защищает компьютер лучше,жду ваших мнений!:friends:

Я правильно думаю о ObservableCollection ?
Добрый день. Хочу убедится, что думаю правильно. Вот есть у меня форма с DataGrid, в котором я...

robots - правильно думаю?
Здравствуйте, есть страницы: ...

В комбобоксе у меня хранятся названия, а вставить мне надо айдишник. Как это правильно сделать?
Есть 2 таблицы заказы ( id, id поставщика, дата) и поставщики (id, название) Кидаю на форму...

5
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
04.11.2011, 19:51 2
а просто в прерывании таймера проверяйте состояние кнопки, опрос каждые 200 мс. подтяжка - на питание (можно внутреннюю), кнопка - на землю. если два раза подряд - 0 значит нажата кнопка. если больше 10раз подряд 0 - значит какая-то зараза кнопку держит. если два раза подряд -1 - кнопку отпустили
0
fothomstir
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
05.11.2011, 05:08 3
ну да, так работает отлично, спсб..

просто с "дальней" задумкой придумывал с использованием прерывания: там будут 3 кнопки на ацп, т.е. надо померять напряжение и решить, какая нажата

чтобы не мерять в таймере думал - может ловить прерывание, когда там какая-то кнопка будет нажата и тогда только замерять.. только затупил, там то по INT0 будет черти-что срабатывать скорее всего
просто не знаю пока, как долго измеряется напряжение ацп.. но то методом тыка завтра буду выяснять :)
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
05.11.2011, 12:49 4
так вы всё со своим пультом что ли? Так не мудрите тогда. опрашивайте АЦП в таймере - если напряжение стало ниже, значит нажали кнопку, а какую - зависит от того, насколько упало напряжение. измеряйте напряжение и сравнивайте с табличкой, где занесено значение для каждой кнопки.
0
fothomstir
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
05.11.2011, 13:23 5
так вы всё со своим пультом что ли?
ну да :)

делал поделку мелкому к новому году, ну и заодно решил из нее часы сделать, ну и уж совсем заодно разобраться, как опрашивать тот пульт - мелкими шажками решаю кусочки (кусочков там такому чайнику как я более чем - и чтение сд-карты, и мр3)

так и сделаю, опрос в таймере; просто думал это "долго", но похоже зря думал
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
05.11.2011, 17:16 6
>>так и сделаю, опрос в таймере; просто думал это "долго", но похоже зря думал
это точно зря - в некоторых мк таймер может работать даже быстрее самого мк
0
05.11.2011, 17:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 17:16

Формы: Можно ли сразу всем сделать, или надо прорисовывать кнопки "ручками" для каждой
Здравствуйте! Подскажите "хитрость" (если есть) управления сразу всеми формами. Скажем есть 40...

Стоит ли скрывать robots txt или нет? Если стоит, то как это надо правильно сделать?
Ребят, если стоит скрывать роботс, то скажите как это сделать, особо толком ничего не нашел в...

Ребята , прошу посмотреть, надо сделать очень слайдер как надо
Сделал с помощью плагина. Плагин vSlider сайт http://bubnovsky-perm.ru/ Не могу понять как его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru