我正在尝试使用PIR运动检测器配置Arduino,将运动检测器数据和一些随机生成的温度发送到网关。
一旦检测到动作,我想让它发送“MO / 1”并且仍然像“T / 26”那样每20秒发送一次温度。
我使用过这段代码却没有成功:
void loop() {
if (motion == HIGH) {
// Motion Detected
// Send to Gateway
}
while (1) {
temp = random(1,5) + 28;
// Send to Gateway
delay(20000);
}
}
正如您所注意到的,一旦Arduino进入while
,它就不会关注if
块!由于我是Arduino的新手并对其编程,我认为有人可以帮忙解决这个问题。
答案 0 :(得分:3)
你注意到这不会起作用。
您需要使用变量来计算自上次检查以来经过的时间。
unsigned long t1;
void setup() {
...
t1=millis();
}
void loop() {
if (motion == HIGH) {
// Motion Detected
// Send to Gateway
}
if(millis()-t1>20000) {
temp = random(1, 5) + 28;
// Send to Gateway
t1=millis();
}
}