@DimiDr0lik

Как регулировать температуру в заданных пределах?

В моём коде первое условие исполняется только первый раз почему то, хотя по мне так логика правильная, по умолчанию ktemp = false

Код:

if (ktemp = false && temp_atmosphere < t1) {
    digitalWrite(heatPin, HIGH); //включение обогревателя
    digitalWrite(airPin, HIGH); //включение вентилятора
    ktemp = true;
    Serial.println("obogrev BKJI");
  }
  else if (ktemp = true && temp_atmosphere < (t1 + 0.5)) {
    digitalWrite(heatPin, HIGH); //включение обогревателя
    digitalWrite(airPin, HIGH); //включение вентилятора
  }
  else if (temp_atmosphere > (t1 + 3) || hum_atmosphere > 85) { //если темепература на 3с или влажность выше 85%
    digitalWrite(heatPin, LOW); //выключение обогревателя
    digitalWrite(airPin, HIGH); //включение вентилятора
    Serial.println("obduv BKJI");
  }
  else {
    ktemp = false;
    digitalWrite(heatPin, LOW); //выключение обогревателя
    digitalWrite(airPin, LOW); //выключение вентилятора
    Serial.println("BCE BbIK");
  }
  • Вопрос задан
  • 2764 просмотра
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега Arduino
Любые ответы на любые вопросы
:[|||||||||||||||||||||||||||/////////////////-еще мноооого километров баяна-\\\\\\\\\\\\\\|]:
if (ktemp = false && temp_atmosphere < t1) {
Я так полагаю, вы хотите проверить ktemp на ложность.
В этом случае, нужно писать два знака равно, потому что один знак в C++ - присваивание.

А еще лучше, написать:
if ( (!ktemp) && (temp_atmosphere < t1) ) {
Ответ написан
@vilgeforce
Раздолбай и программист
Странное вижу: ktemp выставляется в true только после включения обогревателя, но второе условия проверяет что ktemp = true и снова включает обогреватель. Но к проблеме, думаю, оно не относится.
Ветка else сработает только если включен обогрев, и температура в пределах t1+0.5 - t1 + 3. Подозреваю, что этот промежуток система пролетает очень быстро и начинается ветка else if (temp_atmosphere > (t1 + 3), в которой ktemp не сбрасывается. Поясните, кстати, назначение ktemp - не совсем понял зачем оно.
Ответ написан
Комментировать
@Roots
Это очень похоже на попытку написать PID регулятор.. Ровно тоже как различные коптеры могут плавно стабилизироваться или наоборот резко в зависимости от условий. Нелинейная зависимость.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы