C++ 使用Arduino发送两种不同类型的传感器数据
我正在尝试用PIR运动检测器配置Arduino,将运动检测器数据和一些随机生成的温度发送到网关 我想让它发送“MO/1”一旦运动被检测到,仍然保持发送温度每20秒像“T/26” 我使用过此代码,但没有成功:C++ 使用Arduino发送两种不同类型的传感器数据,c++,arduino,arduino-ide,C++,Arduino,Arduino Ide,我正在尝试用PIR运动检测器配置Arduino,将运动检测器数据和一些随机生成的温度发送到网关 我想让它发送“MO/1”一旦运动被检测到,仍然保持发送温度每20秒像“T/26” 我使用过此代码,但没有成功: void loop() { if (motion == HIGH) { // Motion Detected // Send to Gateway } while (1) { temp = random(1,5) + 28;
void loop() {
if (motion == HIGH) {
// Motion Detected
// Send to Gateway
}
while (1) {
temp = random(1,5) + 28;
// Send to Gateway
delay(20000);
}
}
您可能会注意到,一旦Arduino在时进入
,它将不会注意if
块!因为我是Arduino的新手,我想有人可以帮我做这件事。这不会像你注意到的那样起作用
您需要使用一个变量来计算自上次检查以来经过的时间
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();
}
}
这不会像你注意到的那样起作用
您需要使用一个变量来计算自上次检查以来经过的时间
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();
}
}
据我所知,循环
函数将不断被反复调用。你不需要在里面有一个循环。如果你需要每20秒发生一件事,那么你应该用其他方式来检查通话之间的时间,并检查是否至少20秒已经过去。@某个程序员,我知道如何在JS中完成,但不是在C++中。我理解,但如果你能告诉我怎么做,我也很感激。据我所知,循环
函数将不断被反复调用。你不需要在里面有一个循环。如果你需要每20秒发生一件事,那么你应该用其他方式来检查通话之间的时间,并检查是否至少20秒已经过去。@某个程序员,我知道如何在JS中完成,但不是在C++中。我理解,但如果你能告诉我怎么做,我也很感激。