当温度低于一个数字时,我需要打开我的a / c电源,当温度高于另一个数字时,我需要关闭电源。所以我试过这个草图
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);
但它会在每个循环周期发送OFF命令,因为温度不会立即发生变化。是否可以仅为循环发送一次ON和OFF命令并等待它发送另一个命令?我认为存储最后发送的命令,但我不知道该怎么做。感谢
答案 0 :(得分: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;
}
这将测试温度,如果为true,它将检查是否需要使用isOn布尔值进行切换。
如果您想提供温度范围,我可以帮助您完成温度条件部分。