Ви не увійшли.
Как работать с одной кнопкой проблем нет, а вот если надо опросить сразу (либо одновременно) несколько кнопок, как сделать запись выражения. Действия с кнопками вызываются в разной части программы и в разных подпрограммах.
Например :
//если не нажаты кнопки, то считаем до выхода из меню
if ((digitalRead(buttonUp)==1)&&(digitalRead(buttonDown)==1)&&(digitalRead(buttonEsc)==1)&&(digitalRead(buttonEnter)==1)&&(valExit!=100))
{
valExit++;
delay (100);
}
// если нажата одна из кнопок то сбрасываем счетчик
if ((digitalRead(buttonUp)==0)||(digitalRead(buttonDown)==0)||(digitalRead(buttonEsc)==0)||(digitalRead(buttonEnter)==0))
{
valExit=0;
delay (100);
}
Или другой вариант :
if ((digitalRead(buttonEsc)==0)&&(digitalRead(buttonEnter)==0))
{
delay (200);
flagStat=1;
analogWrite (5, 100);
delay (700);
}
Вот такую команду buttonEsc.update() следующая (buttonEsc.read()==00) я пишу в начале цикла loop или перед каждым вызовом кнопок?
Прошу подсказать:)
Остання редакція Zen (2016-03-02 00:20:09)
Неактивний
в начале цикла loop
В начале цикла я прописываю buttonEsc.update() && buttonEnter.update() && buttonUp.update() && buttonDown.update() или делать через ||?
Далее я обращаюсь как обычно к кнопкам buttonEsc.read(), я правильно понял?
Неактивний
buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();а потом к каждой кнопке button....read()
Спасибо, вечером попробую.
А если у меня кнопки в разной части программы выполняют разные значения...., то есть в программе есть условия if в которые я захожу (при определенных переменных) и в них выполняются свои действия указанные кнопки, все равно я объявляю только в начале (то есть в начале loop) buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
Правильно я понял? Или и в начале после каждой if?
Неактивний
один раз в начале loop()
кнопки проде бы заработали, только вот такое выражение отказывается работать
if ((buttonEsc.read()==0)&&(buttonEnter.read()==0))
{
flagStat=1;
delay (300);
}
что не так?
Неактивний
а нафига вам столько делеев в коде
ну и ещё есть хорошая штука Serial
смотрите в мониторе что с вашими переменными происходит
пытаюсь бороться с дребезгом контактов....
вот если получиться нормально решить вопрос с этой библиотекой, тогда избавлюсь от делеев)
если поставить сразу после loop
buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
то не совсем то что надо, например если я по какому-то условию попадаю в условие if, кнопки должны опрашиваться и обновляться только в этом условии....., у них в этом условии свои назначения....как это решить?
Неактивний
vvr пише:а нафига вам столько делеев в коде
ну и ещё есть хорошая штука Serial
смотрите в мониторе что с вашими переменными происходитпытаюсь бороться с дребезгом контактов....
вот если получиться нормально решить вопрос с этой библиотекой, тогда избавлюсь от делеев)
если поставить сразу после loop
buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
то не совсем то что надо, например если я по какому-то условию попадаю в условие if, кнопки должны опрашиваться и обновляться только в этом условии....., у них в этом условии свои назначения....как это решить?
вам важно когда опрашиваются кнопки или когда происходит какое то событие
в лупе идёт постоянный опрос кнопок
а уже работайте с ними где вам нужно, после или до ваших ифов
Неактивний
Zen пише:пытаюсь бороться с дребезгом контактов....
Лучше 0,1 мкф впаралель кнопкам.
дребезг заключается не в плохом контакте, а в том, что одно нажатие воспринимается программой как нажатий 10-15 (за счет высокой скорости опроса). Почитайте в serial одно нажатие сколько раз отобразится у вас?:))
Неактивний
в лупе идёт постоянный опрос кнопок
а уже работайте с ними где вам нужно, после или до ваших ифов
у меня еще используется switch case...при попадании в case корректно ли будет работать опрос, если разместить сразу после loop
buttonEsc.update() и т.д. Загрузил в ардуину, и мне кажется, что нажатие как-то очень долго остается активно, потому что заходит в меню (написанное мной в case) и сразу выходит из него.... в самом начале программы объявлено Вounce buttonUp = Bounce(8, 5); (аналогично и для других кнопок)
что не так?
Неактивний