Пока l oop не ломается c - PullRequest
0 голосов
/ 18 января 2020

Я новичок ie для Arduino и c. Я работаю над проектом, в котором у меня есть DHT11 и nodemcu esp8266. В этом проекте я хочу управлять A C. Я хочу, чтобы A c включалось, когда температура поднимается выше 32,00 градусов, и оставалось включенным, пока температура не опустится ниже 30,00. После падения ниже 30,00 градусов A C следует выключать и включать только тогда, когда температура поднимается выше 32,00 градусов.

Я успешно включаю c, когда он поднимается выше 32,00, но он никогда не выключается, даже если температура падает ниже 30,00. При сбросе nodemcu он выключается.

Я думаю, что пока l oop не ломается. Вставьте мой код ниже, пожалуйста, помогите.

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);    
  }    

}    

1 Ответ

1 голос
/ 18 января 2020

У вас есть две очень разные и разные переменные с именем t. Сначала тот, который определен вне l oop, а затем тот, который определен внутри l oop. Условие l oop может «видеть» только то, что определено за пределами l oop.

Переменные, определенные во внутренней области видимости shadows переменные с тем же именем во внешней области видимости и они (как уже упоминалось) различны и различны.

Решение состоит в том, чтобы присвоить переменной t внутри l oop, а не определять новую переменную:

t = dht.readTemperature();    

С другой стороны, вам, вероятно, не нужно повторно измерять температуру в случае else.

...