Skocz do zawartości

Arduino i DHT temparatury maksymalna i minimalna


gracjuszek10

Pomocna odpowiedź

#include <virtuabotixRTC.h>// dodanie biblioteki zegara RTC
virtuabotixRTC myRTC(8, 9, 10); //Piny zegara RTC
#include "DHT.h"//termometr poczatek
#define DHT11_PIN 2
DHT dht;//termometr koniec
int status = 0; //ustawienie blokady
int TempMax = 5;
int TempMin = 30;


void setup() {
 Serial.begin(9600);
//myRTC.setDS1302Time(30, 43, 20, 5, 25, 11, 2023);
pinMode(12, OUTPUT);// sterowanieprzekaznikiem 4/ wlaczanie/wylaczanie webasto
pinMode(11, OUTPUT);// sterowanie przekaznikiem 3/ zwiekszanie temperatury
pinMode(7, OUTPUT);// sterowanie przekaznikiem 2/ zmniejszenie temperatury
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(7, HIGH);
 Serial.begin(9600);//temperatura
  dht.setup(DHT11_PIN);// komunikacja przez pin 2

}

void loop() {


int temperatura = dht.getTemperature();


myRTC.updateTime();
Serial.print("Data / Godzina : ");
 Serial.print(myRTC.dayofmonth); 
 Serial.print("/");
 Serial.print(myRTC.month);
 Serial.print("/");
 Serial.print(myRTC.year);
 Serial.print(" ");
 Serial.print(myRTC.hours);
 Serial.print(":");
 Serial.print(myRTC.minutes);
 Serial.print(":");
 Serial.println(myRTC.seconds); // put your main code here, to run repeatedly:
 Serial.print("status: ");
 Serial.println(status);
 Serial.print("temperatura: ");
  Serial.print(temperatura);
  Serial.println("*C");

if(temperatura > TempMax){TempMax = temperatura;}
Serial.print("TempMax: ");
Serial.println(TempMax);
 
if(temperatura < TempMin){TempMin = temperatura;}
delay(200);
Serial.print("TempMin: ");
Serial.println(TempMin);

Serial.println("");
delay(200);
  

if(myRTC.hours >= 3 && myRTC.hours <= 8 && myRTC.minutes >= 00 && myRTC.seconds >=00 && temperatura <= 12 && temperatura > 0 && status == 0)
{
  digitalWrite(12, LOW);//wlaczanie webasto
  delay(1500);
  digitalWrite(12, HIGH);
  delay(200);
  status = 1;
}
  else if(myRTC.hours >= 7 && myRTC.minutes >= 30 && myRTC.seconds >=00 && status == 1)
  {
    digitalWrite(11,LOW);//podnoszenie temperatury o 5 stopni
    delay(500);
    digitalWrite(11,HIGH);
    delay(500);
    digitalWrite(11,LOW);
    delay(500);
    digitalWrite(11,HIGH);
    delay(500);
    digitalWrite(11,LOW);
    delay(500);
    digitalWrite(11,HIGH);
    delay(500);
    digitalWrite(11,LOW);
    delay(500);
    digitalWrite(11,HIGH);
    delay(500);
    digitalWrite(11,LOW);
    delay(500);
    digitalWrite(11,HIGH);
    delay(500);
    status = 2;
  }
else if(myRTC.hours >= 3 && myRTC.hours <= 8 && myRTC.minutes >= 00 && temperatura >=23 && status >0 && status <3)
{
    digitalWrite(12,LOW);//wylaczanie webasta gdy temperatura wysoka
    delay(5500);
    digitalWrite(12,HIGH);
    delay(200);
     
    status = 3;
}
  else if(myRTC.hours >= 19 && myRTC.minutes >= 0 && status > 1 && status < 4)
  {
 digitalWrite(7,LOW);//obnizanie nastaw temperatury/zbrojenie ustawien
 delay(500);
 digitalWrite(7,HIGH);
    delay(500);
    digitalWrite(7,LOW);
    delay(500);
    digitalWrite(7,HIGH);
    delay(500);
    digitalWrite(7,LOW);
    delay(500);
    digitalWrite(7,HIGH);
    delay(500);
    digitalWrite(7,LOW);
    delay(500);
    digitalWrite(7,HIGH);
    delay(500);
    digitalWrite(7,LOW);
    delay(500);
    digitalWrite(7,HIGH);
    delay(500);
    status = 4;
  }
else if(myRTC.hours == 19 && myRTC.minutes == 1 && status > 0 && status <= 4)
{
  status = 0;
  delay(200);
}
  else
  {digitalWrite(13, HIGH);
  }

  delay(3000);
}

To mój pierwszy post więc witam Was wszystkich.

Potrzebuję pomocy odnośnie odczytów temperatur maksymalnych i minimalnych. Mimo, że mam identyczny kod jak w artykule to nie działa u mnie wyświetlanie temperatury minimalnej. Maksymalna działa jak należy, minimalna za nic w świecie nie chce, a próbowałem już kilkadziesiąt różnych zmian. Generalnie - temperatura minimalna zawsze wyświetla mi "0". Bez względu jaką wartość ustawię jako początkową.

Jeśli w miejscu "{TempMin = temperatura;}" w 54 linijce kodu zamiast "temperatura" wstawię dowolną liczbę, to na monitorze wyświetla mi tą  liczbę, ale za nic nie chce mi wstawić tam aktualnej temperatury. Wyświetla wartość "0". Co ciekawe identycznie napisany kod do temperatury maksymalnej działa pięknie (oczywiście jego jakby lustrzane odbicie). Kod jest częścią większego kodu, który steruje ogrzewaniem. Czy ktoś ma jakiś pomysł? 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.