使用 Arduino 发送两种不同类型的传感器数据

Send two different kinds of sensor data using Arduino

我正在尝试使用 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 的新手并对其进行编程,我认为有人可以帮助解决这个问题。

这不会像您注意到的那样起作用。

您需要使用变量来计算自上次检查以来经过的时间。

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();
  }
}