Skocz do zawartości

Błąd podczas wyświetlania wartości z czujnika DHT 11 na wyświetlaczu LCD


Pomocna odpowiedź

Napisano

Dzień dobry, mój kod do wyświetlania danych z czujnika DTH11 na wyświetlaczu LCD wygląda tak:

#include <Wire.h>
#include "rgb_lcd.h"
#include <DHT.h>

rgb_lcd lcd;
DHT dht;

void setup() 
{
   Serial.begin(9600);
   lcd.begin(16, 2);
   lcd.clear();
    
   dht.setup(2);
}

void loop() 
{
  int wilgotnosc = dht.getHumidity();
  int temperatura = dht.getTemperature();
  
  lcd.setCursor(0, 0);
  lcd.println("temperatura:");
  lcd.println(temperatura);
  lcd.println("*C");
 
  Serial.println(temperatura);

  lcd.setCursor(0, 1);
  lcd.print("wilgotnosc:");
  lcd.println(wilgotnosc);
  lcd.println("%");
  
  Serial.println(wilgotnosc);
  delay(500);
}

Natomiast efekt wygląda tak jak w załączniku. Do tego np. dmuchając na czujnik, nie zmienia się wartość wilgotności. Kiedyś ten sam czujnik działał poprawnie. Co może być przyczyną dziwnych symboli na ekranie i braku reakcji czujnika?

Z góry dzięki za pomoc.

261484787_2062852863878034_6706508307834198962_n.jpg

@farmaceuta Nie mam miernika obecni, żeby sprawdzić napięcie, ale dla pewności wymieniłem przewody i dalej jest to samo. Sam LCD wyświetla dobrze litery ale problem pojawia się jak ma wyświetlić te dane z czujnika. 

@_LM_ Nie wiem czy dobrze rozumiem, ale no konsola nie wyświetla żadnego błędu, program ładuje się poprawnie.

 

@_LM_ Aaa to w takim razie w konsoli nie dzieje się nic podejrzanego. Najzwyczajniej zwraca dwie wartości liczbowe dwucyfrowe (jedną od temperatury drugą od wilgotności) bez żadnych dodatkowych znaków. Tylko same wskazania są wątpliwe raz pokazuje 21 stopni później jakieś kosmiczne 26 itd.

Ok ja zawaliłem, miałem napisać w terminalu. Skoro nawet w terminalu masz niepewne wyniki może to świadczyć o uszkodzeniu czujnika, zakładam że połączenie jest prawidłowe. Najlepiej byłoby podmienić do na inny dla testów

@_LM_ Podłączyłem cyfrowy czujnik ciśnienia i wysokości bmp388 i wgrałem taki program:

#include <Wire.h>
#include "rgb_lcd.h"
#include "DFRobot_BMP388_I2C.h"
DFRobot_BMP388_I2C bmp388;

rgb_lcd lcd;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
    while(bmp388.begin() != 0){
   Serial.println("Error initializing. Trying again..");
   delay(1000);
  }

}

void loop() {
  
    float cisnienie = bmp388.readPressure();
    float wysokosc = bmp388.readAltitude();
     
  lcd.setCursor(0, 0);
  lcd.println("cisnienie: ");
  lcd.println(cisnienie);
  lcd.println(" Pa");
  
  Serial.println(cisnienie);
  
  lcd.setCursor(0, 1);
  lcd.print("wysokosc :");
  lcd.println(wysokosc);
  lcd.println(" m");

  Serial.println(wysokosc);
   
  delay(1000);
}

Efekt jest taki, że nadal pokazują się krzaki, ale już tylko w pierwszej linijce. Po tym doświadczeniu wydaje mi się, że chyba problem musi leżeć po stronie samego wyświetlacza, na pewno później jeszcze wszystkie przewody posprawdzam.bmp.thumb.jpg.1af85856e854ea7a4af63662408a6e75.jpg

3 minuty temu, Januszxd napisał:

Miałem jeszcze gdzieś drugi wyświetlacz bez i2c to go jutro poszukam i zobaczę czy tak samo będzie to na nim wyglądać.

I to jest najlepsze wyjscie...wykluczysz w razie czego uszkodzony lcd

2 minuty temu, farmaceuta napisał:

wyjscie...wykluczysz w razie czego uszkodzony lcd

Terminal też ma uszkodzony? Skoro tam również nieprawidłowe wartości są wyświetlane? 

(edytowany)
21 minut temu, _LM_ napisał:

Terminal też ma uszkodzony? Skoro tam również nieprawidłowe wartości są wyświetlane? 

Ja mowie o samym wyswietlaczu...a kolega napisal...

 

2 godziny temu, Januszxd napisał:

@_LM_ Aaa to w takim razie w konsoli nie dzieje się nic podejrzanego. Najzwyczajniej zwraca dwie wartości liczbowe dwucyfrowe (jedną od temperatury drugą od wilgotności) bez żadnych dodatkowych znaków.

Czyli jednak w monitorze wszystko ok, poza wyswietlana wartoscia...😉 ktora nic wspolnego nie ma raczej z krzakami na lcd...poprostu Ty mowisz o blednych danych a ja o krzakach na lcd...😅

Edytowano przez farmaceuta
2 godziny temu, Januszxd napisał:

Najzwyczajniej zwraca dwie wartości liczbowe dwucyfrowe (jedną od temperatury drugą od wilgotności) bez żadnych dodatkowych znaków. Tylko same wskazania są wątpliwe raz pokazuje 21 stopni później jakieś kosmiczne 26 itd.

@farmaceuta cały cytat rozwiewa wątpliwości co do tego czy dane są poprawnie odczytywane. Manipulacja jak w tvpis 😉

  • Lubię! 1
4 minuty temu, _LM_ napisał:

@farmaceuta cały cytat rozwiewa wątpliwości co do tego czy dane są poprawnie odczytywane. Manipulacja jak w tvpis 😉

Ty masz racje i ja mam racje...😉 Ty zwracasz uwage na dane z czujnika ktore skacza...(zgadza sie..21 a 26 to juz ewidentnie blad), ja natomiast mowie o wyswietlaniu krzakow na lcd i w tej materii nie zwracam uwagi na to czy wynikiem prawidlowym jest 20 czy 23 bo bez wzgledu na temperature wyskakuja krzaki, czyli duza szansa ze lcd tez sprawia bledy...😉

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