подскажите по кнопке

Dimoneus
Offline
Зарегистрирован: 17.03.2018
int x = 0;
int y = 1;
void setup() {
  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
}
void loop() {
  boolean button1 = digitalRead(2);
  if(button1 == 1){
    if(x == 0){
      x = x+y;
    }
  }
  if(button1 == 1){
    if(x == 1){
      x = x+y;
    }
  }
  if(button1 == 1){
    if(x == 2){
      digitalWrite(3, HIGH);
    }
  } 
}

Здраствуйте, можете подсказать, как сделать так, чтобы кнопка считала 1 нажатие за 1 клик? Т.е, если нажал на кнопку, сколько бы не держал, то ардуина считала бы, что ты быстро нажал и отпустил. А то просто так, если долго держать, то на 3 пин идет HIGH. Заранее спасибо.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Dimoneus пишет:

Здраствуйте, можете подсказать, как сделать так, чтобы кнопка считала 1 нажатие за 1 клик? Т.е, если нажал на кнопку, сколько бы не держал, то ардуина считала бы, что ты быстро нажал и отпустил. А то просто так, если долго держать, то на 3 пин идет HIGH. Заранее спасибо.

о_О

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Клапауций 555, +100500

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Добавить переменную-флаг, в которой запоминать состояние и проверять в условии if вместе с кнопкой.

byte x=0;
byte flag=0;

void setup() {
  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
}

void loop() {
  boolean button1 = digitalRead(2);
  if(button1==HIGH && flag==0){
    if (x == 2) {
      digitalWrite(3, HIGH);
    }
    x++;
    flag=1;
  }
  if(button1==LOW && flag==1){
    flag=0;    
  }
}