Відповісти

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

Назад

Огляд теми (нові повідомленні вгорі)

Zen
2016-03-04 00:22:29

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

Zen
2016-03-04 00:08:45
vvr пише:

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

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

Zen
2016-03-03 23:50:09
alex_dol пише:
Zen пише:

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

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

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

vvr
2016-03-03 23:28:22
Zen пише:
vvr пише:

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

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

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

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

alex_dol
2016-03-03 23:15:55
Zen пише:

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

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

Zen
2016-03-03 21:38:45
vvr пише:

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

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

vvr
2016-03-03 20:00:11

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

Zen
2016-03-03 19:25:48
vvr пише:

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

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

vvr
2016-03-02 13:59:49

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

Zen
2016-03-02 13:16:14
vvr пише:

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

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

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

vvr
2016-03-02 11:42:13

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

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

Zen
2016-03-02 10:44:09
vvr пише:

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

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

vvr
2016-03-02 09:33:13

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

Zen
2016-03-02 00:19:37

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

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