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

时间:2017-07-24 04:16:30

标签: c++ arduino arduino-ide

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

1 个答案:

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