gpt4 book ai didi

c - C 中的 while 循环没有中断

转载 作者:行者123 更新时间:2023-11-30 14:32:28 24 4
gpt4 key购买 nike

我是 arduino 和 c 的新手。我正在开发一个项目,其中有 DHT11 和 nodemcu esp8266。在这个项目中,我想控制一台空调。我想要的条件是空调必须在温度高于 32.00 度时打开,并保持打开状态直到温度低于 30.00 度。低于 30.00 度后,空调应关闭并仅在温度高于 32.00 度时打开。

当空调温度高于 32.00 时,我成功打开空调,但即使温度低于 30.00,空调也不会关闭。重置nodemcu时它会关闭。

我认为我的 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 情况下重新获取温度。

关于c - C 中的 while 循环没有中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59800708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com