所以代码是:
#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
变量重置为零,
我尝试了很多方法,但是都失败了。
有没有办法让它开始倒数开始
答案 0 :(得分:1)
您的代码无法正常工作,因为millis
正在更新sec
变量。
在sec
达到59
值之后,您的if
语句将sec
更改为0
。但是millis
将再次放入最新的时间值,即60
和lcd.print(sec)
将其打印出来。并且循环继续进行,而从未重置sec
值,因为millis
正在更新它。
还有一件事情,不要使用delay(1000)
来停止控制器1
秒钟,您需要利用millis
的唯一目的,即避免使用{{1} }。
这是您的解决方案:
delays