【发布时间】:2015-03-06 18:27:17
【问题描述】:
我正在尝试在我的程序中使用此 Arduino 代码,LED 将保持亮起 5秒后自行关闭
#include <elapsedMillis.h>
int led = 13 ;
elapsedMillis timer0 ;
#define interval 5000
boolean timer0Fired ;
// the setup routine runs once when you press reset:
void setup()
{
pinMode(led, OUTPUT);
digitalWrite(led, HIGH);
timer0Fired = false;
timer0 = 0; // clear the timer at the end of startup
}
void loop()
{
if ((!timer0Fired) && (timer0 > interval))
{
timer0Fired = true; // don't execute this again
digitalWrite(led, LOW); // turn led off after 5 sec
}
}
我不明白 if 语句在循环中是如何工作的,!timer0Fired 的计算结果应该为 1,但是当我打印出来时它是 0,所以当 timer0 超过 间隔 if 语句的计算结果应为假,我在 UNO 上尝试过,它可以工作。
【问题讨论】:
-
您可能打印错了。你是怎么打印出来的?
-
是否曾经调用
setup()来初始化timer0Fired?如果未初始化,它将有一个来自随机内存的垃圾值,因此如果!timer0Fired有任何非零值,它将评估为0。 -
timer0Fired 没有初始化,是吗?
-
你能发布一个 MCVE 吗?
-
@ichramm:全局变量和静态变量默认为零初始化。
标签: c++ if-statement arduino logical-operators