Skocz do zawartości
Komentator

Kurs Arduino II - #8 - cyfrowy czujnik wilgotności (DHT11)

Pomocna odpowiedź

@olekmi skompilowałem przed chwilą poniższy kod z kursu i wszystko zadziałało poprawnie:

#include "DHT.h"
#define DHT11_PIN 2
DHT dht;
 
void setup()
{
  Serial.begin(9600);
  dht.setup(DHT11_PIN);
}
 
void loop()
{
  //Pobranie informacji o wilgotnosci
  int wilgotnosc = dht.getHumidity();
  Serial.print(wilgotnosc);
  Serial.print("%RH | ");
  
  //Pobranie informacji o temperaturze
  int temperatura = dht.getTemperature();
  Serial.print(temperatura);
  Serial.println("*C");
 
  delay(1000); //Odczekanie wymaganego czasu
}

Pokaż z ciekawości zawartość swojego pliku DHT.h - znajdziesz go w katalogu z zainstalowaną biblioteką.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Treker 
dzięki wielkie za pomoc, już sobie poradziłem 🙂 
Mam pytanie czy można ustawić zakres pracy w enkoderze tak by po osiągnięciu danej wartości wyświetlił dana wartość np tempertura na ekranie LCD. Czy muszę napisać kod menu. Jeżeli tak to w jaki sposób bym mógł to zrobić?

Udostępnij ten post


Link to post
Share on other sites
21 godzin temu, olekmi napisał:

dzięki wielkie za pomoc, już sobie poradziłem 🙂 

@olekmi podziel się proszę rozwiązaniem problemu - na pewno przyda się jeszcze komuś w przyszłości 🙂

21 godzin temu, olekmi napisał:

Mam pytanie czy można ustawić zakres pracy w enkoderze tak by po osiągnięciu danej wartości wyświetlił dana wartość np tempertura na ekranie LCD. Czy muszę napisać kod menu. Jeżeli tak to w jaki sposób bym mógł to zrobić?

O jakim enkoderze mowa? W tym kursie nie używamy takiego komponentu, ciężko wiec o jakąś konkretną poradę, bo nie wiem co dokładnie masz przed sobą 🙂

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Używając jednego czujnika DHT-11 mogłem odczytywać nowe wartości co 1 sekundę a nawet krócej. Podłączając inny czujnik DHT-11 dostaję NaN co drugi pomiar, działa dopiero przy próbkowaniu co najmniej co 1,2 sekundę. Dlaczego na innym czujniku wygląda to inaczej?

Edytowano przez michalt38

Udostępnij ten post


Link to post
Share on other sites

@michalt38 mógłbyś wrzucić zdjęcie swojego układu i kod?

Udostępnij ten post


Link to post
Share on other sites

Moja wersja stacji pogodowej z wyświetlaniem wyników na lcd:

#include <OneWire.h>
#include <DallasTemperature.h>   //Biblioteka termometru cyfrowego

OneWire oneWire(A5);                    //podłącznie termometru do A5
DallasTemperature sensors(&oneWire);     //przekazanie informacji do biblioteki
#include "DHT.h" 
DHT dht;              //biblioteka czujnika wilgoci

#include <LiquidCrystal.h>    //biblioteka lcd
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);      //inf. o wyswietlaczu

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
dht.setup(2);           //czujnik wilgoci pin 2
sensors.begin();        //inicjalizacja termometru
lcd.begin(16, 2);       //inicjalizacja lcd
lcd.clear();

}

void loop() {
  // put your main code here, to run repeatedly:
  sensors.requestTemperatures();        //zapytanie o odczyt termometru
  float temperatura = sensors.getTempCByIndex(0);   //zapisanie odczytu jako stałej
  int wilgotnosc = dht.getHumidity();             //zapisanie odczytu jako stałej
  int odczyt = analogRead(A0);
  int zachmurzenie = map(odczyt, 0, 1024, 1, 5);

  lcd.setCursor(0, 0);
  lcd.print("Temperatura");
  lcd.setCursor(0, 1);
  lcd.print(temperatura);
  lcd.setCursor(4, 1);
  lcd.print((char)223);
  lcd.setCursor(5, 1);
  lcd.print("C");                   //wyświetlenie temperatury powietrza

  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Wilgotnosc");
  lcd.setCursor(0, 1);
  lcd.print(wilgotnosc);
  lcd.setCursor(3, 1);
  lcd.print("%RH");                 //wyswietlenie wilgotnosci powietrza

  delay(2000);
  lcd.clear();

  switch(zachmurzenie) {          //wyswietlenie inf. o zachmurzeniu
    case 1:
    lcd.setCursor(0, 0);
    lcd.print("Zachmurzenie");
    lcd.setCursor(0, 1);
    lcd.print("Calkowite");
    break;
    case 2:
    lcd.setCursor(0, 0);
    lcd.print("Zachmurzenie");
    lcd.setCursor(0, 1);
    lcd.print("Duze");
    break;
    case 3:
    lcd.setCursor(0, 0);
    lcd.print("Zachmurzenie");
    lcd.setCursor(0, 1);
    lcd.print("Umiarkowane");
    break;
    case 4:
    lcd.setCursor(0, 0);
    lcd.print("Zachmurzenie");
    lcd.setCursor(0, 1);
    lcd.print("Male");
    break;
    lcd.setCursor(0, 0);
    lcd.print("Zachmurzenie");
    lcd.setCursor(0, 1);
    lcd.print("Bezchmurnie");
    break;
  }
  delay(2000);
  lcd.clear();
  
}

 

  • Lubię! 1

Udostępnij ten post


Link to post
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!

Gość
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...