Таймер обратного отсчета

MsFedkin
Offline
Зарегистрирован: 12.12.2017

Всем доброго времени суток. Хочу попросить у вас совета в моей ситуации, делаю я значит светофор с выводм вермени его работы на экран от Nokia 5110, в целом программа работает прекрасно за исключением одного но!  Примерно после 15 минут таймер обратного отсчета сбивается на 1 секунду,при этом основаная программа в своей точьности не теряет. 

 // пример с красным светом 
 // этот код в loop
if (millis()- Countdown_time > K){
   Countdown_time = millis();
   //*******Дисплей*****
   uint8_t x;
   if (CounterDown_Red > 9)  x = 20;// Расположение курсора 
   else x = 30;
   // вывод текста 
   display.setCursor(x,10);
   display.println(Counter(*pCounterDown_Red, 60));
   display.display(); 
   display.clearDisplay();    
  }

  // функция обратного отсчета 
uint8_t Counter (uint8_t *returned, const uint8_t val) { // функция обратного отсчета 
// val это число от которого должен идти отсчет   
 if ((*returned) == 0) (*returned) = val;
 return --(*returned); 
}

Чтож я открыт для критики и предложений))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
 // пример с красным светом 
 // этот код в loop
if (millis()- Countdown_time >= K){// <-- //if (millis()- Countdown_time > K){
Countdown_time += K;//<--  //Countdown_time = millis();
   //*******Дисплей*****
   uint8_t x;
   if (CounterDown_Red > 9)  x = 20;// Расположение курсора 
   else x = 30;
   // вывод текста 
   display.setCursor(x,10);
   display.println(Counter(*pCounterDown_Red, 60));
   display.display(); 
   display.clearDisplay();    
  }

  // функция обратного отсчета 
uint8_t Counter (uint8_t *returned, const uint8_t val) { // функция обратного отсчета 
// val это число от которого должен идти отсчет   
 if ((*returned) == 0) (*returned) = val;
 return --(*returned); 
}

 

MsFedkin
Offline
Зарегистрирован: 12.12.2017

Эта строчка кода:

Countdown_time += K; 

Не рабочая из-за функции перывания (я еще отключения светофора добавил). А вот эта помогла: 

if (millis()- Countdown_time >= K)

 таймер за 30 мин не сбился. Вроде просто а эфективно