Странно работает код

saniks
Offline
Зарегистрирован: 09.04.2013


byte btn2 = 8; // кнопка 2
byte btn3 = 7; // кнопка 3
byte i,e,n1,n2;
static uint32_t millis_prev;
void setup()
{
 pinMode(btn2, INPUT);
 pinMode(btn3, INPUT);
 digitalWrite(btn2, HIGH); //включаем подтягивающий резистор
 digitalWrite(btn3, HIGH); //включаем подтягивающий резистор
 Serial.begin(9600);
}

void loop()
{
 i=2;
 if (i==2)
 {   
  
  e=(dreb(btn2));      
  if (e==1) 
  { 
   n1++; 
  }
       
  e=(dreb(btn3));
  if (e==1) 
  {
   n2++;    
  }
  
 }
 Serial.println(n1);
 Serial.println(n2);
 delay(5);
}

byte dreb(byte btn)
{  
  byte val = digitalRead(btn);
  if(val==LOW)
  {
   if(millis()-millis_prev >= 100)
   {       
    millis_prev = millis();        
    return 1;          
   }   
  }        
  if(val==HIGH)
  { 
   millis_prev = millis();        
   return 0;        
  }  
}

По задумке скетч должен при нажатии кнопки 1 или кнопки 2 каждые 0.1 сек увеличивать значение n1 и n2 соответственно. Но почему-то функция dreb возвращает 1 только если нажаты одновременно обе кнопки. Подскажите как исправить?

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Надо закомментировать строку 51.