而循环在c中没有中断

而循环在c中没有中断,c,while-loop,C,While Loop,我是arduino和c的新手。我正在从事一个项目,其中我有一个DHT11和nodemcu esp8266。 在这个项目中,我想控制一台交流发电机。 我想要的条件是,当温度超过32.00度时,空调必须打开,并保持打开直到温度低于30.00度。低于30.00度后,空调应关闭,只有在温度高于32.00度时才打开 当温度超过32.00时,我成功地打开了空调,但即使温度低于30.00,它也不会关闭。重置节点MCU时,它将关闭 我想我的while循环没有中断。将我的代码粘贴到下面,请帮助 void loop

我是arduino和c的新手。我正在从事一个项目,其中我有一个DHT11和nodemcu esp8266。 在这个项目中,我想控制一台交流发电机。 我想要的条件是,当温度超过32.00度时,空调必须打开,并保持打开直到温度低于30.00度。低于30.00度后,空调应关闭,只有在温度高于32.00度时才打开

当温度超过32.00时,我成功地打开了空调,但即使温度低于30.00,它也不会关闭。重置节点MCU时,它将关闭

我想我的while循环没有中断。将我的代码粘贴到下面,请帮助

void loop() {    
   float t = dht.readTemperature();    

  if (t > 32.00) {    
    while (t > 30.00) {    
      float t = dht.readTemperature();    
      digitalWrite(r1,HIGH);    
      Serial.print(t);    
      Serial.println("Ac_on");    
      delay(1000);    
    }    
  }     
  else {    
    float t = dht.readTemperature();    
    digitalWrite(r1,LOW);    
    Serial.print(t);    
    Serial.println("Ac_off");    
    delay(1000);    
  }    

}    

您有两个名称为
t
的截然不同的变量。首先是在循环外部定义的,然后是在循环内部定义的。循环条件只能“看到”在循环外部定义的条件

在内部作用域中定义的变量会在外部作用域中隐藏相同名称的变量,并且它们(如上所述)是不同的

解决方案是分配给循环内的变量
t
,而不是定义一个全新的变量:

t = dht.readTemperature();    

另一方面,您可能不需要在
else
案例中重新蚀刻温度