如何获取触发它的变量下方的所有值?

How to get all the values bellow the variable that triggers it?

大家好希望你度过了美好的除夕夜。我正在搜索要在我的 IF 函数中使用的命令,该函数可以读取触发它的变量的值是否低于此值。

我想要实现的示例:我有一个信号通过 mqtt 从 nodered 返回到我的代码,这是一个滑块,它选择最小值(温度)来打开风扇。我需要帮助才能获得以下所有值,因为当我将值设置为 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) ) ...

至少我认为这就是你想要的。