delay между программами.

LamaKING
Offline
Зарегистрирован: 16.02.2018

Доброй ночи форумчане!

Подскажите пожалуйста, в решении моей проблемы.

В void loop у меня совмещены 2 программы-последовательность, вначале одно действие,потом другое. После первого действия идет delay(5000);

Оно отражается и на втором действии. А там это ожидание ненужно,она должна выполняться без каких либо задержек. Подскажите,как можно это поправить?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Классический пример: blink without delay

LamaKING
Offline
Зарегистрирован: 16.02.2018

Извините пожалуйста, где об этом подробнее можно почитать?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

LamaKING пишет:

Извините пожалуйста, где об этом подробнее можно почитать?

«Летят два крокодила, один на север, другой — зелёный. Сколько стоит пьяный ёжик, если тени исчезают в полночь?» Ответ на этот вопрос получился просто невероятным: «А зачем мне холодильник, если я не курю?».

 Не напоминает ничего?. Это тоже самое, что вы написали выше.

MaksVV
Offline
Зарегистрирован: 06.08.2015
unsigned long prev = 0;
int interval = 1000; // интервал 1000 мс

void setup() {}

void loop() {
if (millis()-prev>interval){
  
  //тут делаем что-то периодически - раз в интервал

  prev = millis(); //не забываем сбрасывать таймер
  }

}

 

LamaKING
Offline
Зарегистрирован: 16.02.2018

Огромное вам спасибо! Все получилось.

LamaKING
Offline
Зарегистрирован: 16.02.2018

А вы бы лучше писали по существу...

У человека, ниже вашего поста текста меньше в 2 раза, а информативности намного больше чем у вас.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ещё вариант, пригодится

unsigned long timer = 0;
bool timerenabled = 0;

int interval = 1000; // интервал 1000 мс

void setup() {}

void loop() {

if (если что-то приключилось) {
  timerenabled = 1;  //включаем таймер
  timer = millis();  //нулим таймер
}


if (timerenabled){

  // тут делаем что-то пока таймер тикает 

 if (millis()-timer>interval){
  
                  //тут делаем что-то, когда таймер кончился
timerenabled = 0; // не забываем выключить таймер
                            }                         
                 }
else {
  
  // тут делаем что-то если таймер выключен
  
  }

}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

LamaKING пишет:

А вы бы лучше писали по существу...

У человека, ниже вашего поста текста меньше в 2 раза, а информативности намного больше чем у вас.

Ну может у человека "хрустальный шар" получше, или просто везение побольше. Вот и угадал.