Помогите новичку.

pashog08
Offline
Зарегистрирован: 28.02.2013

Решил написать программу - таймер. Зажигает светодиод по назначенному времени, назначается кнопками.

Секундная кнопка (buttonFirst) работает, а минутная нет. Можно хоть час после запуска с минутной ждать...

int buttonFirst = 4; 
int buttonSecond = 7; 
int led = 13; 
int buttonFirstNumber = 0; 
int buttonSecondNumber = 0; 
int equalButton = 8; 
int equal = 0; 
int resetButton = 12;
void setup()
{
  pinMode(led, OUTPUT);
  pinMode(buttonFirst, INPUT);
  pinMode(buttonSecond, INPUT);
  pinMode(equalButton, INPUT);
  pinMode(resetButton, INPUT);
}

void loop()
{
  if(digitalRead(buttonFirst)==HIGH) 
  {
    ++buttonFirstNumber;
    delay(500);
  }
 

  if(digitalRead(buttonSecond)==HIGH)
  {
    ++buttonSecondNumber;
    delay(500);
  }


  if(digitalRead(equalButton)==HIGH)
  {
    equal = buttonSecondNumber * 60000 + buttonFirstNumber * 1000 ;
    digitalWrite(led, LOW);
    delay(equal);
    digitalWrite(led, HIGH);
  }
    
    if(digitalRead(resetButton)==HIGH)
  {
    digitalWrite(led,LOW);
    buttonFirstNumber = 0;
    buttonSecondNumber = 0;
    equal = 0;
  }
}

 

tsostik
Offline
Зарегистрирован: 28.02.2013

Переменная equal имеет тип int, а его значения ограничены интервалом (-32768; 32767).

Объявите ее как long и должно заработать.

 

pashog08
Offline
Зарегистрирован: 28.02.2013

Спасибо!