Пауза в программе в течение некоторого времени

У меня есть переменная timeInSec, которая записывает время, когда цикл начинается. Он определяется как timeInSec = millis();. У меня два условия. Если (timeInSec - lastRun)< 5 (то есть 5 секунд), выполняется первое условие (инструкция if). В противном случае, если (timeInSec - lastRun)>5 выполняется второе условие (инструкция else). Вот код:

void loop(){
  timeInSec = millis();  // Records time in seconds
  // if(lastRun > 0) {   // if i run this, only else statement is executed
  // delay(10000);
  // }
  if((timeInSec - lastRun) < 5000){  // Treshold time (if condition which runs when timeInSec is less than 5 seconds)
    // Some code
  }
  else{ // If treshold time exceeds (executes when timeInSec is > 5seconds)
   delay(10000);  // if i run this, only else statement is executed
   lastRun = timeInSec;
  }
}

Здесь оператор else выполняется один раз и управление возвращается if снова. Я хочу приостановить управление в else в течение 10 секунд, а затем вернуться к if для дальнейшего выполнения. Каждый раз, когда элемент управления должен останавливаться на else в течение 10 секунд. Я использовал delay в инструкции else и в этом случае выполняется только оператор else. То же самое происходит, если я использую delay в начале цикла (как в коде). Я пробовал без использования delay, но не удалось.

Спасибо за помощь!

2 голоса | спросил Sri Harsha 6 J0000006Europe/Moscow 2017, 13:07:57

1 ответ


3

Не пытайтесь изменить millis(). Вместо этого запишите последний раз второй код (инструкция else), и проверить, было ли это больше, чем пять секунд назад:

void loop() {
    static uint32_t lastRun;
    uint32_t now = millis();
    if (now - lastRun < 5000) {
        // Some code
    }
    else {
        // Some code
        lastRun = now;  // record the time
    }
}

Это по существу тот же метод, который используется в Blink without задержка Arduino учебник.

ответил Edgar Bonet 6 J0000006Europe/Moscow 2017, 13:17:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132