Счётчик наработки

николай76
Offline
Зарегистрирован: 08.06.2019
Подскажите как ставить на Паузу счётчик, и включать его (продолжать ) например на выводе 13 по низкому и высокому уровню?


 {
       
  //Счётчик наработки в формате часы,минуты,секунды. После 50 суток работы Arduino встроенный счетчик миллисекунд обнуляется и начинает отсчет снова.
 
 unsigned long time = millis() / 1000;
  display.setContrast(55);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(35, 40);
  if (time/60/60<10) {  display.print ("0"); }
 display.print (time/60/60);
 display.print (":");
if (time/60%60<10) {  display.print ("0"); }
 display.print ((time/60)%60);
 display.print (":");
  if (time%60<10) {  display.print ("0"); }
   display.println (time%60);
  display.display();
}

 

 

николай76
Offline
Зарегистрирован: 08.06.2019

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Добавить переменную в которой будут храниться секунды и её значение будет увеличиваться на 1 при двух условиях: 1) прошло 1000 миллисекунд; 2) низкий уровень на 13 пине.

николай76
Offline
Зарегистрирован: 08.06.2019

А пример этого (кода) можно? 

Часы тикают постоянно, а нужно чтоб отсчитывали время работы реле.

Я пробовал так  if(digitalRead(13)==HIGН)   { здесь код который выше }

else {  А здесь я не знаю как остановить счётчик}
Скорее всего что я делаю не так.
Как вообще код на паузу поставить?
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Завести флаг паузы.

 

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

николай76 Я имел в виду встроить Ваш код в эту конструкцию http://arduino.ru/tutorials/BlinkWithoutDelay вместо моргания диодом.

 

 

николай76
Offline
Зарегистрирован: 08.06.2019

Хороший пример. Попробую. Только вот модель на работе, через пол часа домой, так что в понедельник.

Ни разу ардуино в протеусе не пробовал. и вообще возможно ли это. Ладно это уже совсем другая тема.

b707
Offline
Зарегистрирован: 26.05.2017

николай76 пишет:

Я пробовал так  if(digitalRead(13)==HIGН)   { здесь код который выше }

else {  А здесь я не знаю как остановить счётчик}
Скорее всего что я делаю не так.
Как вообще код на паузу поставить?

Никак вы миллис на паузу не поставите, это неверный подход.

Вам нужно завести свой счетчик, отдельный от миллис. И прибавлять его только тогда, когда на пине есть сигнал. Задача элементарная на 2 строчки.

А ваш код выше вообще к отсчету времени никакого отношения не имеет, это код показа времени на экране.