#1 2016-03-02 00:19:37

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Вопрос по использованию библиотеки <Bounce.h>

Как работать с одной кнопкой проблем нет, а вот если надо опросить сразу (либо одновременно) несколько кнопок, как сделать запись выражения. Действия с кнопками вызываются в разной части программы и в разных подпрограммах.
Например :
//если не нажаты кнопки, то считаем до выхода из меню
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)

Неактивний

#2 2016-03-02 09:33:13

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Вопрос по использованию библиотеки <Bounce.h>

в начале цикла loop

Неактивний

#3 2016-03-02 10:44:09

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

vvr пише:

в начале цикла loop

В начале цикла я прописываю buttonEsc.update() && buttonEnter.update() && buttonUp.update() && buttonDown.update()  или делать через ||?
Далее я обращаюсь как обычно к кнопкам  buttonEsc.read(), я правильно понял?

Неактивний

#4 2016-03-02 11:42:13

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Вопрос по использованию библиотеки <Bounce.h>

buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();

а потом к каждой кнопке button....read()

Неактивний

#5 2016-03-02 13:16:14

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

vvr пише:

buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();

а потом к каждой кнопке button....read()

Спасибо, вечером попробую.
А если у меня кнопки в разной части программы выполняют разные значения...., то есть в программе есть условия if в которые я захожу (при определенных переменных) и в них выполняются свои действия указанные кнопки, все равно я объявляю только в начале (то есть в начале loop) buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
Правильно я понял? Или и в начале после каждой if?

Неактивний

#6 2016-03-02 13:59:49

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Вопрос по использованию библиотеки <Bounce.h>

один раз в начале loop()

Неактивний

#7 2016-03-03 19:25:48

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

vvr пише:

один раз в начале loop()

кнопки проде бы заработали, только вот такое выражение отказывается работать
if ((buttonEsc.read()==0)&&(buttonEnter.read()==0))
            {
                flagStat=1;
                delay (300);
           
            }
что не так?

Неактивний

#8 2016-03-03 20:00:11

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Вопрос по использованию библиотеки <Bounce.h>

а нафига вам столько делеев в коде
ну и ещё есть хорошая штука Serial
смотрите в мониторе что с вашими переменными происходит

Остання редакція vvr (2016-03-03 20:02:17)

Неактивний

#9 2016-03-03 21:38:45

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

vvr пише:

а нафига вам столько делеев в коде
ну и ещё есть хорошая штука Serial
смотрите в мониторе что с вашими переменными происходит

пытаюсь бороться с дребезгом контактов....
вот если получиться нормально решить вопрос с этой библиотекой, тогда избавлюсь от делеев)
если поставить сразу после loop
buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
то не совсем то что надо, например если я по какому-то условию попадаю в условие if, кнопки должны опрашиваться и обновляться только в этом условии....., у них в этом условии свои назначения....как это решить?

Неактивний

#10 2016-03-03 23:15:55

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Вопрос по использованию библиотеки <Bounce.h>

Zen пише:

пытаюсь бороться с дребезгом контактов....

Лучше 0,1 мкф впаралель кнопкам.

Неактивний

#11 2016-03-03 23:28:22

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Вопрос по использованию библиотеки <Bounce.h>

Zen пише:
vvr пише:

а нафига вам столько делеев в коде
ну и ещё есть хорошая штука Serial
смотрите в мониторе что с вашими переменными происходит

пытаюсь бороться с дребезгом контактов....
вот если получиться нормально решить вопрос с этой библиотекой, тогда избавлюсь от делеев)
если поставить сразу после loop
buttonEsc.update();
buttonEnter.update();
buttonDown.update();
buttonUp.update();
то не совсем то что надо, например если я по какому-то условию попадаю в условие if, кнопки должны опрашиваться и обновляться только в этом условии....., у них в этом условии свои назначения....как это решить?

вам важно когда опрашиваются кнопки или когда происходит какое то событие  smile

в лупе идёт постоянный опрос кнопок
а уже работайте с ними где вам нужно, после или до ваших ифов

Неактивний

#12 2016-03-03 23:50:09

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

alex_dol пише:
Zen пише:

пытаюсь бороться с дребезгом контактов....

Лучше 0,1 мкф впаралель кнопкам.

дребезг заключается не в плохом контакте, а в том, что одно нажатие воспринимается программой как нажатий 10-15 (за счет высокой скорости опроса). Почитайте в serial одно нажатие сколько раз отобразится у вас?:))

Неактивний

#13 2016-03-04 00:08:45

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

vvr пише:

в лупе идёт постоянный опрос кнопок
а уже работайте с ними где вам нужно, после или до ваших ифов

у меня еще используется switch case...при попадании в case корректно ли будет работать опрос, если разместить сразу после loop
buttonEsc.update() и т.д. Загрузил в ардуину, и мне кажется, что нажатие как-то очень долго остается активно, потому что заходит в меню (написанное мной в case) и сразу выходит из него.... в самом начале программы объявлено Вounce buttonUp = Bounce(8, 5); (аналогично и для других кнопок)
что не так?

Неактивний

#14 2016-03-04 00:22:29

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Вопрос по использованию библиотеки <Bounce.h>

и кажется что большое запаздывание, нажал, отпустил и потом примерно чрез 0,5-1 сек происходит реакция на нажатие, так и должно быть?

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму