Как сделать обнуляемый таймер?

sasha320v
Offline
Зарегистрирован: 04.11.2018

Нужно начать отсчитывать время когда условие выполнилось, если перестало выполняться счётчик нужно обнулить. Как это можно сделать?

sadman41
Offline
Зарегистрирован: 19.10.2016

millis = 0 !

sasha320v
Offline
Зарегистрирован: 04.11.2018

А можно это сдлеать не трогая millis? просто она уже используется 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Опишите что вы конкретно хотите достичь

приведите ваш код где вы пытались это сделать

sasha320v
Offline
Зарегистрирован: 04.11.2018

asam пишет:

Опишите что вы конкретно хотите достичь

приведите ваш код где вы пытались это сделать

Надо было написать решить такую проблему, пока реле переключается, всё в порядке, когда остановилось переключаться, подождать чуть-чуть и сообщить об этом. Вот кусочек кода где всё-таки сделал обнуляемый счётчик, в итоге получилось что хотел, но чёт мне кажется должен быть способ проще или нормальное решение? к в условиях это сигнал с реле 

if (millis()-t2>1000){
    t2 = millis();
    timer1++;
    timer2++;
  }
  
  if(k==1){
    timer2=0;
    if (timer1>7 && k==1)digitalWrite(13, HIGH);
    else  digitalWrite(13, LOW); 
  }
  if(k==0){
    timer1=0;
    if (timer2>7 && k==0)digitalWrite(13, HIGH);
    else digitalWrite(13, LOW);  
 
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

автомат Пуха или движение к нему.:)

if (millis() - t2 > 1000) {
  t2 = millis();
  timer1++;
  timer2++;
}
switch (k) {
case 0:
  timer1 = 0;
  if (timer2 > 7)digitalWrite(13, HIGH);
  else digitalWrite(13, LOW);
  break;
case 1:
  timer2 = 0;
  if (timer1 > 7)digitalWrite(13, HIGH);
  else  digitalWrite(13, LOW);
}

 

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

sasha320v пишет:

Нужно начать отсчитывать время когда условие выполнилось, если перестало выполняться счётчик нужно обнулить. Как это можно сделать?

Вест статическую переменную oldMillis и вместо millis() использовать millis() - oldMillis.

По необходимости делать oldMillis = millis();.

Гриша
Offline
Зарегистрирован: 27.04.2014

andriano пишет:

sasha320v пишет:

Нужно начать отсчитывать время когда условие выполнилось, если перестало выполняться счётчик нужно обнулить. Как это можно сделать?

Вест статическую переменную oldMillis и вместо millis() использовать millis() - oldMillis.

По необходимости делать oldMillis = millis();.

можно еще расширить сообщение: Ввести необходимое кол-во переменных для хранения времени начала отсчета....  типа oldMillisN = millis(); где  N -  порядковый номер

и вообще, с такой постановкой вопроса

sasha320v пишет:

 начать отсчитывать время когда условие выполнилось, если перестало выполняться счётчик нужно обнулить.

можно вообще этого не делат. На кой лад в начале цикла запускать учет времени, а потом его тупа обнулять? может необходимо измерить время выполнения условия?