нужна помощь по датчику DHT22

artemon25
Offline
Зарегистрирован: 25.12.2015

Подскажите есть скетч управления реле по показаниям с dht22 он работает при температуре 27 включается реле

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
int relay_pin = 7;

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  pinMode(relay_pin, OUTPUT);
  digitalWrite(relay_pin, HIGH);
  dht.begin();
}

void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
   
  if (t < 27) {
      digitalWrite(relay_pin, LOW);
      delay(10);
    }
    else {
      digitalWrite(relay_pin, HIGH);

    }
     
    
  }
}

как правильно вписать в код чтобы было при больше 27 и меньше 25 включалось реле одно и тоже реле

пробовал просто в конец вставить но не могает становится ещё хуже

 if (t > 25) {
      digitalWrite(relay_pin, LOW);
      delay(10);
    }
    else {
      digitalWrite(relay_pin, HIGH);

    }

Подскажите как правильно это сделать

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

artemon25 пишет:

как правильно вписать в код чтобы было при больше 27 и меньше 25 включалось реле 

Никак вписывать не надо. Если реле должно включаться при температуре большей, чем 27 и меньшей, чем 25 - его просто не надо включать никогда. Это и будет правильным решением.

artemon25
Offline
Зарегистрирован: 25.12.2015

ЕвгенийП пишет:

artemon25 пишет:

как правильно вписать в код чтобы было при больше 27 и меньше 25 включалось реле 

Никак вписывать не надо. Если реле должно включаться при температуре большей, чем 27 и меньшей, чем 25 - его просто не надо включать никогда. Это и будет правильным решением.

мне вообще то надо что бы при тмепературе 75 градусов реле выключилось и при 25 выключилось а  с 25 до 75 чтоб было включено наверное не правильно сформулировал вопрос

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

artemon25 пишет:

мне вообще то надо что бы при тмепературе 75 градусов реле выключилось и при 25 выключилось а  с 25 до 75 чтоб было включено 

Ну, так бы и писали. А вто Вы ведь другое написали. Если так, то совсем другое дело.

artemon25
Offline
Зарегистрирован: 25.12.2015

ЕвгенийП пишет:

artemon25 пишет:

мне вообще то надо что бы при тмепературе 75 градусов реле выключилось и при 25 выключилось а  с 25 до 75 чтоб было включено 

Ну, так бы и писали. А вто Вы ведь другое написали. Если так, то совсем другое дело.

ну так могли бы вы помсотреть как правильно написать скетч 

sadman41
Offline
Зарегистрирован: 19.10.2016

artemon25 пишет:

ЕвгенийП пишет:

artemon25 пишет:

мне вообще то надо что бы при тмепературе 75 градусов реле выключилось и при 25 выключилось а  с 25 до 75 чтоб было включено 

Ну, так бы и писали. А вто Вы ведь другое написали. Если так, то совсем другое дело.

ну так могли бы вы помсотреть как правильно написать скетч 

Напишите две строки на языке ардуино:
1) если температура больше 75 реле выключить.
2) если температура меньше 25 реле включить.

Emer
Offline
Зарегистрирован: 02.11.2016

В чем сложность?

ЕСЛИ (t БОЛЬШЕ 25 И t МЕНЬШЕ 75) {

реле включено

} ИНАЧЕ {

реле выключено

}

?

в программу сами переведете?

 

artemon25
Offline
Зарегистрирован: 25.12.2015

sadman41 пишет:

artemon25 пишет:

ЕвгенийП пишет:

artemon25 пишет:

мне вообще то надо что бы при тмепературе 75 градусов реле выключилось и при 25 выключилось а  с 25 до 75 чтоб было включено 

Ну, так бы и писали. А вто Вы ведь другое написали. Если так, то совсем другое дело.

ну так могли бы вы помсотреть как правильно написать скетч 

Напишите две строки на языке ардуино:
1) если температура больше 75 реле выключить.
2) если температура меньше 25 реле включить.

if (t > 27) {
      digitalWrite(relay_pin, HIGH);
  }
    if (t < 25) {
      digitalWrite(relay_pin, HIGH);
 
   }
впринципе работает если темпреатура между заданных цифр то он выключается но при падение или поднимании температуры сам не включает только если перезапускать ардуинку

 

artemon25
Offline
Зарегистрирован: 25.12.2015

Emer пишет:

В чем сложность?

ЕСЛИ (t БОЛЬШЕ 25 И t МЕНЬШЕ 75) {

реле включено

} ИНАЧЕ {

реле выключено

}

?

в программу сами переведете?

 

 if (t > 27||t < 25) {
      digitalWrite(relay_pin, HIGH);
       delay(10);
    }
    else {
      digitalWrite(relay_pin, LOW);
  }
спасибо вот так работет затупил конкретно. всем спасибо
Emer
Offline
Зарегистрирован: 02.11.2016

artemon25 пишет:

 а  с 25 до 75 чтоб было включено наверное не правильно сформулировал вопрос

а тут я затупил..

вышеприведенный самополученный  код под условие никак не попадает.

автор..вы, прося о помощи, можете изъясняться прямее?:))

sadman41
Offline
Зарегистрирован: 19.10.2016

artemon25 пишет:

if (t > 27) {

      digitalWrite(relay_pin, HIGH);
  }
    if (t < 25) {
      digitalWrite(relay_pin, HIGH);
 
   }
впринципе работает если темпреатура между заданных цифр то он выключается но при падение или поднимании температуры сам не включает только если перезапускать ардуинку

Потому что HIGH не выключает реле.