大家好,希望你们在新年前夕过得愉快。我正在搜索一个在我的IF
函数中使用的命令,该命令可以读取触发它的变量的值是否在下面。
我试图实现的示例:我有一个信号通过mqtt从nodered返回到我的代码,这是一个滑块,它可以选择最小值(temp(,就像打开风扇一样。我需要帮助来获得以下所有值,因为当我将值设置为25时,它只适用于25,而不是低于该值。我需要这个功能,因为传感器总是可以从滑块跳过我的设置值。
所以问题是,我如何实现IF
的函数来读取变量设置下面的值?
当我在网上搜索时,我发现了一个命令constrain()
,我认为我不能使用它,因为如果滑块向上移动到40或向下移动到10 ,变量的值可能会随时变化
我现在如何做的代码:
if (millis() > millisNow + sendDelay){
if (TempThres >= 20 && TempThres <= 30 && temp == TempThres) {
digitalWrite(RELAY_PIN2, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(RELAY_PIN2, LOW);
}
Serial.println ("wwwwwwwwwwwwwww");
Serial.println(TempThres);
Serial.println ("wwwwwwwwwwwwwww");
if (SoilThres >= 1 && SoilThres <= 100 && soilmoisturepercent == SoilThres) {
digitalWrite(RELAY_PIN15, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(RELAY_PIN15, LOW);
}
Serial.println ("aaaaaaaaaaaaaaa");
Serial.println(SoilThres);
Serial.println ("aaaaaaaaaaaaaaaa");
}
首先,这将最终中断:if (millis() > millisNow + sendDelay)
。我想你想要millis() - lastmillis >= sendDelay
。(示例页:https://www.norwegiancreations.com/2018/10/arduino-tutorial-avoiding-the-overflow-issue-when-using-millis-and-micros/)
在我看来,你在自己的条件下做了太多的测试。对于温度,我们只希望它在20到30之间——为什么我们关心它是否也恰好匹配一些未知的TempThres
?为什么我们要将TempThresh
设置在这个范围之外?土壤湿度也是如此。
如果这些阈值需要是可变的,那么构建一个下限和上限,并对照它们进行检查:if ( temp >= (thresh - 5) && temp <= (thresh + 5) ) ...
至少我认为这是你想要的。