如何将Millis()变量重置为零

时间:2020-08-08 15:13:28

标签: arduino arduino-uno arduino-ide arduino-c++

所以代码是:

#include <LiquidCrystal.h>

int sec = 0;
int mts = 0;
int hrs = 0;

LiquidCrystal lcd(4, 6, 10, 11, 12, 13);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  sec = millis() / 1000;
  lcd.clear();
  lcd.setCursor(3, 0);
  lcd.print("Seconds:");
  lcd.setCursor(11, 0);
  lcd.print(sec);
  lcd.setCursor(9, 1);
  lcd.print("Mnt:");
  if (sec >= 59) {
    sec = 0;
    mts = mts + 1;
    lcd.setCursor(13, 1);
    lcd.print(mts);
  } else {
    lcd.setCursor(13,1);
    lcd.print(mts);
  }
  delay(1000)
}

问题是我无法将sec变量重置为零,

我尝试了很多方法,但是都失败了。

有没有办法让它开始倒数开始

1 个答案:

答案 0 :(得分:1)

您的代码无法正常工作,因为millis正在更新sec变量。

sec达到59值之后,您的if语句将sec更改为0。但是millis将再次放入最新的时间值,即60lcd.print(sec)将其打印出来。并且循环继续进行,而从未重置sec值,因为millis正在更新它。

还有一件事情,不要使用delay(1000)来停止控制器1秒钟,您需要利用millis的唯一目的,即避免使用{{1} }。

这是您的解决方案:

delays