c++ - 如何独立检查多个变量?

标签 c++ if-statement variables arduino sensors

这是有错误的代码部分:

  int value = analogRead(LM351);
  float Temperature = value * 500.0 / 1023.0;
  lcd.setCursor(6,0);
  lcd.print(Temperature); 
  lcd.setCursor(11,1);
  int value1 = analogRead(LM352);
  float Humidity = value1 * 500.0 / 1023.0;
  lcd.setCursor(10,1);
  lcd.print(Humidity); 
  

  if (Temperature > 24){
    digitalWrite(motor, HIGH);
    digitalWrite(LedRed, HIGH);
    digitalWrite(LedGreen, LOW);
    lcd.print("");
  }
  else {
    digitalWrite(motor, LOW);
    digitalWrite(LedRed, LOW);
    digitalWrite(LedGreen, HIGH);
    lcd.print("");
  }
  
  if (Humidity > 10){
    digitalWrite(motor, HIGH);
    lcd.print("");
  }
  else {
    digitalWrite(motor, LOW);
    lcd.print("");
  }
  
   delay(1000);
}

正确的,如果温度超过 24 或湿度超过 10,电机应该旋转。但是当我运行这段代码时,电机只有在湿度超过 10 时才会旋转。但是当湿度小于 10温度超过 24,电机不转。

原因是我一个接一个地检查一个变量,有没有一种方法可以独立检查每个变量?

最佳答案

您的逻辑检查一件事并使用react,然后检查另一件事。
您可以同时检查两件事,确定 4 种情况中的一种,然后使用react, 或者一个接一个地检查,但只做决定而不是立即使用react,然后再使用react。

我想你特别问了关于单独检查的问题,所以继续做决定吧。

// no decisions yet
bool NeedMotor = false;

if (Temperature > 24)
{ 
    NeedMotor = true;
    digitalWrite(LedRed, HIGH);
    digitalWrite(LedGreen, LOW);
    lcd.print("");
} else
{
    digitalWrite(LedRed, LOW);
    digitalWrite(LedGreen, HIGH);
    lcd.print("");
}
  
if (Humidity > 10){
    NeedMotor = true;
    lcd.print("");
} else
{
    lcd.print("");
}

if (NeedMotor)
{
    digitalWrite(motor, HIGH);
} else
{
    digitalWrite(motor, LOW);
}

这样,湿度决定不会覆盖温度决定,如果温度还没有导致它可能决定使用电机。如果需要电机,将打开,否则关闭。

注意,我不确定液晶打印的目的。我将其保留在您的代码中。

关于c++ - 如何独立检查多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65758227/

相关文章:

javascript - 加快json加载

c++ - STL vector 、迭代器和插入 (C++)

c++ - 来自单个校准相机的 2 个连续帧的视差图。是否可以?

java - 如何检查 Dropbox 用户 session 是否有效?

jquery - 如何在到达页面底部后删除类

javascript - 从变量设置 style.maxWidth

angular - 构建 Angular 库时是否可以使用自定义 Webpack 配置?

c++ - 如果有的话,有没有办法获得 QColor 的智能名称?

c++ - 有没有办法将符号名称转换为函数名称?

c++ - 嵌套在 for 语句中的 if 语句将不起作用