0

当温度低于某个数字时,我需要打开我的空调,反之,当温度高于另一个数字时,我需要关闭它。所以我试过这个草图

  if (DHT.temperature,1 >= 0 &&  DHT.temperature,1 <=18)
  irsend.sendRaw(ON, sizeof(ON)/sizeof(int),khz);
  else if
  irsend.sendRaw(OFF, sizeof(OFF)/sizeof(int),khz);

但它会在每个循环周期发送关闭命令,因为温度不会立即改变。是否可以仅发送一次 ON 和 OFF 命令循环并等待它更改以发送其他命令?我想存储最后发送的命令,但我不知道该怎么做。谢谢

4

1 回答 1

0

您没有正确编写 if 语句。还要添加一个测试它是否已经打开。你可以这样做:

这必须是一个全局变量,因此它不会在下面的循环之外被破坏。

boolean isOn = false;

这可以直接进入您的 void loop() 或其他其他函数,以便您可以根据需要调用它。

if (tempCondition && (!isOn)){
    irsend.sendRaw(ON, sizeof(ON)/sizeof(int),khz);
    isOn = true;
}
else if (othertempCondition && isOn) {
    irsend.sendRaw(OFF, sizeof(OFF)/sizeof(int),khz);
    isOn = false;
}

这将测试温度,如果为真,它将检查是否需要使用 isOn 布尔值进行切换。

如果您想提供温度范围,如果您需要,我可以帮助完成温度条件部分。

于 2014-11-08T16:58:14.163 回答