Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如果语句在ESP32上未按预期工作_C_If Statement_Arduino Esp32 - Fatal编程技术网

C 如果语句在ESP32上未按预期工作

C 如果语句在ESP32上未按预期工作,c,if-statement,arduino-esp32,C,If Statement,Arduino Esp32,我的实验有点令人困惑。我只是使用电容传感器测量土壤湿度,并通过nodemcu的模拟引脚读取。之后,我将土壤状况分为湿润、中等水平或干燥。我想使用简单的if-else语句来实现这一点。但是,由于某些原因,它们没有按预期工作。只有先执行,当条件不应 const int SOIL_MOISTURE_DATA_NOT_FOUND = 0; const int SOIL_TOO_WET = 1; const int SOIL_MID_LEVEL_MOISTURE = 2; const in

我的实验有点令人困惑。我只是使用电容传感器测量土壤湿度,并通过nodemcu的模拟引脚读取。之后,我将土壤状况分为湿润、中等水平或干燥。我想使用简单的if-else语句来实现这一点。但是,由于某些原因,它们没有按预期工作。只有先执行,当条件不应

  const int SOIL_MOISTURE_DATA_NOT_FOUND = 0;
  const int SOIL_TOO_WET = 1;
  const int SOIL_MID_LEVEL_MOISTURE = 2;
  const int SOIL_TOO_DRY = 3;

  
当我使用else if语句时,它只执行第一个语句并返回

  int soilStatus = SOIL_MOISTURE_DATA_NOT_FOUND;

  int rawHumiditySensorValue = analogRead(A0);

  Serial.print("Moisture value : ");
  Serial.println(rawHumiditySensorValue);
  
  if( 500 < rawHumiditySensorValue <= 750 )
  {
    Serial.println("SOIL_TOO_WET");
    soilStatus = SOIL_TOO_WET;
  }
  else if( 750 < rawHumiditySensorValue <= 820 )
  {
    soilStatus = SOIL_MID_LEVEL_MOISTURE;
    Serial.println("SOIL_MID_LEVEL_MOISTURE");
  }
  else if( 820 < rawHumiditySensorValue <= 920 )
  {
    soilStatus = SOIL_TOO_DRY;
  }
   // Invalid reading / no reading cases:
  else if( rawHumiditySensorValue < 500 || rawHumiditySensorValue > 1000 )
  {
    soilStatus = SOIL_MOISTURE_DATA_NOT_FOUND;
  }
    
  Serial.print("Soil Status :");
  Serial.println(soilStatus);
int soilStatus=未找到土壤水分数据;
int rawHumiditySensorValue=模拟读数(A0);
连续打印(“水分值:”);
Serial.println(原始湿度传感器值);

如果(500
表达式
500500  int soilStatus = SOIL_MOISTURE_DATA_NOT_FOUND;

  int rawHumiditySensorValue = analogRead(A0); //readAnalogDataFromHydroSensor(pinID);

  Serial.print("Moisture value : ");
  Serial.println(rawHumiditySensorValue);
  
  if( 500 < rawHumiditySensorValue <= 750 )
  {
    Serial.println("SOIL_TOO_WET");
    soilStatus = SOIL_TOO_WET;
  }
  if( 750 < rawHumiditySensorValue <= 820 )
  {
    soilStatus = SOIL_MID_LEVEL_MOISTURE;
    Serial.println("SOIL_MID_LEVEL_MOISTURE");
  }
  if( 820 < rawHumiditySensorValue <= 920 )
  {
    soilStatus = SOIL_TOO_DRY;
  }
  // Invalid reading / no reading cases:
  if( rawHumiditySensorValue < 500 || rawHumiditySensorValue > 1000 )
  {
    soilStatus = SOIL_MOISTURE_DATA_NOT_FOUND;
  }
    
  Serial.print("Soil Status :");
  Serial.println(soilStatus);
  // Invalid reading / no reading cases:
  if( rawHumiditySensorValue < 500 || rawHumiditySensorValue > 1000 )
  {
    soilStatus = SOIL_MOISTURE_DATA_NOT_FOUND;
  }
  else if( rawHumiditySensorValue <= 750 )
  {
    soilStatus = SOIL_TOO_WET;
  }
  else if( rawHumiditySensorValue <= 820 )
  {
    soilStatus = SOIL_MID_LEVEL_MOISTURE;
  }
  else if( rawHumiditySensorValue <= 920 )
  {
    soilStatus = SOIL_TOO_DRY;
  }
  else
  {
    soilStatus = SOIL_FAR_TOO_DRY; /* Original code did not handle this case! */
  }