Где ошибка?

Ricci
Offline
Зарегистрирован: 24.01.2012

Никак не могу найти причину ошибки. После ресета работает около минуты и потом не реагирует на кнопку 1, которая на 6м порту.

Ricci
Offline
Зарегистрирован: 24.01.2012

 

void setup() 
{
    pinMode(6, INPUT);
    pinMode(8, INPUT);
    pinMode(13, OUTPUT);
}


void settingscreen()
{
  int a=1;
  int timer = millis();
  
  while(a==1)
  {
   digitalWrite(13, HIGH);
   // Если нажата правая кнопка
   if (digitalRead(8) == HIGH)
    {
      a=0;
    }
    
    // Если таймер истек
    if (millis() - timer > 5000)
    {
      a=0;
    }
   }
  digitalWrite(13, LOW);
}

 
void loop() 
{
  if (digitalRead(6) == HIGH)
  {
    settingscreen();
  }
}

 

Mastino
Offline
Зарегистрирован: 03.12.2011

Код нелогичен..

1. что делать если 35 строка LOW?

2. когда работает void settingscreen() идет всегда digitalWrite(13, LOW); (29 строка)

и.. и.. и..

whoim
Offline
Зарегистрирован: 03.11.2011

 из while проще выходить по break. А проблема в типе переменной timer, поставьте long