Skocz do zawartości

Czujnik DHT11 - nie działa pomiar ujemnych temperatur


Wiktor2019

Pomocna odpowiedź

Czujnik temperatury i wilgotności dht11 podłączony do arduino nie pokazuje mi temperatury na minusie. Pokazuje mi np. 10 wiem, że to na minusie ponieważ czujnik jest w zamrażarce ale nie chce pokazać mi minusa. Wgrywam taki program na resztą rzeczy proszę nie zwracać uwagi:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "DHT.h"
#define DHT11_PIN 2
DHT dht;

LiquidCrystal_I2C lcd(0x27, 20, 4);  // set the LCD address to 0x20 for a 16 chars and 2 line display

DS3231 clock;
RTCDateTime dt;

OneWire oneWire(A5); //Podłączenie do A5
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki





void setup()
{
   Serial.begin(9600);
  sensors.begin(); //Inicjalizacja czujnikow
  
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.begin(20, 4); //Deklaracja typu

  Serial.println("Initialize DS3231");;
  clock.begin();
  clock.setDateTime(2019,11,23,21,21,0); 

  Serial.begin(9600);
  dht.setup(DHT11_PIN);
}

void loop()
{ 
  for (int i = 0; i < 1; i++) { //Wykonaj 1 razy
  dt = clock.getDateTime(); 
   lcd.setCursor(0, 0);
    lcd.print("zegar i");//ekran pokazowy
    lcd.setCursor(0, 2);//ekran pokazowy
    lcd.print("termometr ");//ekran pokazowy
    delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
  }
    
  for (int i = 0; i < 100; i++) { //Wykonaj 100 razy
  dt = clock.getDateTime();
      
    lcd.setCursor(0, 0);
    lcd.print("       #czas#       "); //czas
    lcd.setCursor(0, 1); //czas        
    lcd.print(dt.hour);  //czas        
    lcd.print(':');      //czas            
    lcd.print(dt.minute);//czas        
    lcd.print(' ');      //czas            
    lcd.setCursor(0, 2); //data
    lcd.print("       #data#       "); //data
    lcd.setCursor(0, 3); //data
    lcd.print(dt.day); //data
    lcd.print('/'); //data
    lcd.print(dt.month); //data
    lcd.print('/'); //data
    lcd.print(dt.year); //data
    delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 1);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 2);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 3);//przerwa
    lcd.print(" ");//przerwa
    delay(100);
    lcd.clear();
    lcd.setCursor(0, 0);//OBUDOWA
    lcd.print("TEMP W OBUDOWIE");//OBUDOWA
    lcd.setCursor(0, 1);//OBUDOWA  
    lcd.print(clock.readTemperature());//OBUDOWA
    lcd.print("*C");//OBUDOWA
    lcd.setCursor(0, 2);//OBUDOWA
    lcd.print(" ");
    lcd.setCursor(0, 3);//OBUDOWA
    lcd.print(" ");   //OBUDOWA
     delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 1);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 2);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 3);//przerwa
    lcd.print(" ");//przerwa
    delay(100);
    lcd.clear();
    lcd.setCursor(0, 0);//wilgotność i temperatura
    lcd.print("TEMP I WILG NA ZEWN");//wilgotność i temperatura
     //Pobranie informacji o wilgotnosci
    int wilgotnosc = dht.getHumidity();//wilgotność i temperatura
     lcd.setCursor(0, 1);//wilgotność i temperatura
     lcd.print("WILGOTNOSC "); //wilgotność i temperatura
     lcd.print(wilgotnosc);//wilgotność i temperatura
     lcd.print("%RH | ");//wilgotność i temperatura
     //Pobranie informacji o temperaturze
    int temperatura = dht.getTemperature();//wilgotność i temperatura
    lcd.setCursor(0, 2);//wilgotność i temperatura
    lcd.print("TEMPERATURA ");//wilgotność i temperatura
    lcd.print(temperatura);//wilgotność i temperatura
    lcd.print("*C");//wilgotność i temperatura
    for ( int i = 0; i > dht.getTemperature();){
      lcd.setCursor(15, 3);
      lcd.print("- ");
    }

     
      delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
     delay(100);
    lcd.setCursor(0, 0);//pusto
    lcd.print("Aktualna temperatura: ");
    lcd.setCursor(0, 1);//pusto
    lcd.print("grrtghtrhtrh");  //Wyswietlenie informacji
    lcd.setCursor(0, 2);//pusto
    lcd.print("gtgrbn ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print("5675872712&&&%#@@! ");//pusto
     delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
}
}

 
void LCDprint2digits(int number) {
  if (number >= 0 && number < 60) {
    lcd.write('0');
  }
  lcd.print(number);  
}

Co może być nie tak z tym kodem?

Link do komentarza
Share on other sites

Z tego co widzę w większości opisów dht11 przewija się zakres 0-50, więc to raczej prawda. Dla dht22 ciężko o dokumentację, ale faktycznie zakres wydaje się już lepiej dopasowany do oczekiwań 🙂 Niestety w przypadku tanich układów i modułów "z dalekiego wschodu" ciężko jest o solidną dokumentację. Co więcej zdarzają się po prostu podróbki i w sumie nigdy nie wiadomo co dany model będzie miał nadrukowane, a co znajdziemy w środku.

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

@ElvisMam jeszcze jedno pytanie co trzeba w tym kodzie zmienić żeby działał poprawnie z dwoma czujnikami dht11?

Oraz czemu nie pokazuje mi się temperatura z czujnik ds18b20 tylko -127 podłączam taj jak w kursie na forbocie.  

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "DHT.h"
#define DHT11_PIN 2
DHT dht;

LiquidCrystal_I2C lcd(0x27, 20, 4);  // set the LCD address to 0x20 for a 16 chars and 2 line display

DS3231 clock;
RTCDateTime dt;


OneWire oneWire(A5); //Podłączenie do A5
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki


void setup()
{
  Serial.begin(9600);
  sensors.begin(); //Inicjalizacja czujnikow
  
  lcd.init();                      // initialize the lcd 
   // Print a message to the LCD.
  lcd.backlight();
  lcd.begin(20, 4); //Deklaracja typu

  Serial.println("Initialize DS3231");;
  clock.begin();
  clock.setDateTime(2019,11,23,21,21,0); 

  Serial.begin(9600);
  dht.setup(DHT11_PIN);

}

void loop()
{ 
  for (int i = 0; i < 1; i++) { //Wykonaj 1 razy
  dt = clock.getDateTime(); 
   lcd.setCursor(0, 0);
    lcd.print("zegar i");//ekran pokazowy
    lcd.setCursor(0, 2);//ekran pokazowy
    lcd.print("termometr ");//ekran pokazowy
    delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
  }
    
  for (int i = 0; i < 100; i++) { //Wykonaj 100 razy
  dt = clock.getDateTime();
      
    lcd.setCursor(0, 0);
    lcd.print("       #czas#       "); //czas
    lcd.setCursor(0, 1); //czas        
    lcd.print(dt.hour);  //czas        
    lcd.print(':');      //czas            
    lcd.print(dt.minute);//czas        
    lcd.print(' ');      //czas            
    lcd.setCursor(0, 2); //data
    lcd.print("       #data#       "); //data
    lcd.setCursor(0, 3); //data
    lcd.print(dt.day); //data
    lcd.print('/'); //data
    lcd.print(dt.month); //data
    lcd.print('/'); //data
    lcd.print(dt.year); //data
    delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 1);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 2);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 3);//przerwa
    lcd.print(" ");//przerwa
    delay(100);
    lcd.clear();
    lcd.setCursor(0, 0);//OBUDOWA
    lcd.print("TEMP W OBUDOWIE");//OBUDOWA
    lcd.setCursor(0, 1);//OBUDOWA  
    lcd.print(clock.readTemperature());//OBUDOWA
    lcd.print("*C");//OBUDOWA
    lcd.setCursor(0, 2);//OBUDOWA
    lcd.print(" ");
    lcd.setCursor(0, 3);//OBUDOWA
    lcd.print(" ");   //OBUDOWA
     delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 1);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 2);//przerwa
    lcd.print(" ");//przerwa
    lcd.setCursor(0, 3);//przerwa
    lcd.print(" ");//przerwa
    delay(100);
    lcd.clear();
    lcd.setCursor(0, 0);//wilgotność i temperatura
    lcd.print("TEMP I WILG NA ZEWN");//wilgotność i temperatura
     //Pobranie informacji o wilgotnosci
    int wilgotnosc = dht.getHumidity();//wilgotność i temperatura
     lcd.setCursor(0, 1);//wilgotność i temperatura
     lcd.print("WILGOTNOSC "); //wilgotność i temperatura
     lcd.print(wilgotnosc);//wilgotność i temperatura
     lcd.print("%RH | ");//wilgotność i temperatura
     //Pobranie informacji o temperaturze
    int temperatura = dht.getTemperature();//wilgotność i temperatura
    lcd.setCursor(0, 2);//wilgotność i temperatura
    lcd.print("TEMPERATURA ");//wilgotność i temperatura
    lcd.print(temperatura);//wilgotność i temperatura
    lcd.print("*C");//wilgotność i temperatura
       delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
     delay(100);
     lcd.clear();
    lcd.setCursor(0, 0);//pusto
    sensors.requestTemperatures(); //Pobranie temperatury czujnika
    lcd.print("Aktualna temperatura: ");
    lcd.println(sensors.getTempCByIndex(0));  //Wyswietlenie informacji
    lcd.setCursor(0, 1);//pusto
    lcd.print("Aktualna temperatura: ");
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
    delay(5000);
    lcd.clear();
    lcd.setCursor(0, 0);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 1);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 2);//pusto
    lcd.print(" ");//pusto
    lcd.setCursor(0, 3);//pusto
    lcd.print(" ");//pusto
}
}

 
void LCDprint2digits(int number) {
  if (number >= 0 && number < 60) {
    lcd.write('0');
  }
  lcd.print(number);  
}

 

Edytowano przez Wiktor2019
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.