Кодовый замок

lsus
Offline
Зарегистрирован: 11.11.2020

Здравствуйте, мне нужно чтоб при одном нажатии на 3 кнопки загорался светодиод, а если нажатий больше одного будет включаться зуммер. Проблема с зуммером, он работает постоянно и не выключается, как это исправить?

const int btn[]={5,6,7};

const int red=2;
const int green=3;
const int buzz=4;

int k1=0;
int k2=0;
int k3=0;
int s=0;
int currbtn1=0;
int prevbtn1=0;

int currbtn2=0;
int prevbtn2=0;

int currbtn3=0;
int prevbtn3=0;

void setup()
{

  pinMode(btn[0], INPUT);
  pinMode(btn[1], INPUT);
  pinMode(btn[2], INPUT);
  pinMode(green, OUTPUT);
  pinMode(red, OUTPUT);
  pinMode(buzz, OUTPUT);
}

void loop()
{
  digitalWrite(red,HIGH);
  currbtn1=digitalRead(btn[0]);
  currbtn2=digitalRead(btn[1]);
  currbtn3=digitalRead(btn[2]);
  digitalWrite(buzz,LOW);
  if(currbtn1 !=prevbtn1){
    if (currbtn1 == HIGH) {
        k1++;
    }
  }
  prevbtn1=currbtn1;
   if(currbtn2 !=prevbtn2){
     
     if (currbtn2 == HIGH) {
	   k2++;      
    }
  }
  prevbtn2=currbtn2;
    if(currbtn3 !=prevbtn3){
    if (currbtn3 == HIGH) {
        k3++;     
    }
  }  
 prevbtn3=currbtn3;  
  if (k1==1 && k2==1 && k3==1){
    digitalWrite(red,LOW);
    digitalWrite(green,HIGH);
    delay(500);
    digitalWrite(red,HIGH);
    digitalWrite(green,LOW);
    k1=0;
    k2=0;
    k3=0;
  }
  else if (k1>1 && k2>1 && k3>1) {
    tone(buzz,250,50);
    

  } 

  
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Вопрос: после срабатывания зуммера нажатий становится больше одного, меньше одного или ровно одно?

lsus
Offline
Зарегистрирован: 11.11.2020

sadman41 пишет:

Вопрос: после срабатывания зуммера нажатий становится больше одного, меньше одного или ровно одно?

Кажется понял в чем ошибка.. Не было зануления нажатий в условии с зуммером