Оставшееся время выхода 5-минутного таймера

Я пытаюсь создать таймер, который выводит оставшееся время в минутах. Я использую Adafruit Circuit Playground Express. Например, если таймер составляет 5 минут, то каждую минуту он должен выводить оставшееся время, пока время не закончится.

Запущен 5-минутный таймер.

Задержка: 5 минут

Задержка: 4 минуты

Задержка: 3 минуты

Задержка: 2 минуты

Задержка: 1 минута

Это моя попытка реализовать это. Я хотел бы, чтобы он начинался с отображения «Задержка: 5 минут»; однако это не выводится, пока не пройдет 1 минута.

Что я делаю неправильно?

const long interval = 1 * 60 * 1000UL;  
unsigned long previousMillis = 0;           
int minutes = 5 ;

 unsigned long currentMillis = millis();

  while (minutes >= 0){
  if (currentMillis - previousMillis >= interval) {
    // сохранить время последнего мигания светодиодом
    previousMillis = currentMillis;

    Serial.print(F("Delay: "));
    Serial.print(minutes);
    Serial.println(F(" minute(s)"));
    minutes = minutes - 1;
  }
  }

, 👍-1

Обсуждение

это не выводит правильное оставшееся время не является полезным описанием вывода .... было бы гораздо полезнее, если бы вы сказали, что на самом деле представляет собой вывод., @jsotola

Кроме того, как определяется и инициализируется предыдущий Миллис?, @Michel Keijzers

Тот же вопрос был задан и обсуждается здесь https://forum.arduino.cc/index.php?topic=632900.msg4285177#msg4285177, @CrossRoads

почему вы публикуете свой вопрос здесь? ... форум Arduino дает вам хорошие предложения, @jsotola


1 ответ


-1

Попробуйте это: (У меня нет Arduino, поэтому я не могу его протестировать)

int minutes = 5;
int passedminutes = 0;
void setup() {
 Serial.begin(9600);
}
void loop() {
  while((millis() - minutes*60000) < 0)
  {
    if(millis()%60000 == 0)
    {
      Serial.print("Remaining Time: ");
      Serial.println(minutes-passedminutes);
      Serial.println();
      passedminutes++;
      delay(1);
    }
  }
}
,

millis()%60000 ненадежен, потому что счетчик millis() пропускает некоторые значения. Примерно одно из каждых 42 значений., @Edgar Bonet