#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // Czujnik DHT podpięty do pinu numer 2
// Można użyć także pinów 3, 4, 5, 12, 13 or 14 --
// Odkomentuj właściwy typ sensora:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define LDR_PIN 3
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
Serial.begin(9600);
// zainicjuj urządzenie.
dht.begin();
// Parametry czujnika temperatury.
sensor_t sensor;
dht.temperature().getSensor(&sensor);
Serial.print("Czujnik temperatury i wilgotności "); Serial.println(sensor.name);
Serial.println(F("------------------------------------"));
Serial.println(F("Czujnik temperatury"));
Serial.print (F("Nazwa czujnika: ")); Serial.println(sensor.name);
Serial.print (F("Wersja sterownika: ")); Serial.println(sensor.version);
Serial.print (F("ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Wartość maksymalna: ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
Serial.print (F("Wartość minimalna: ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
Serial.print (F("Dokładność: ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
Serial.println(F("------------------------------------"));
// Parametry czujnika wilgotności.
dht.humidity().getSensor(&sensor);
Serial.println(F("Czujnik wilgotności"));
Serial.print (F("Nazwa czujnika: ")); Serial.println(sensor.name);
Serial.print (F("Wersja sterownika: ")); Serial.println(sensor.version);
Serial.print (F("ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Wartość maksymalna: ")); Serial.print(sensor.max_value); Serial.println(F("%"));
Serial.print (F("Wartość minimalna: ")); Serial.print(sensor.min_value); Serial.println(F("%"));
Serial.print (F("Dokładność: ")); Serial.print(sensor.resolution); Serial.println(F("%"));
Serial.println(F("------------------------------------"));
// Ustawienie częstości czytania czujników
delayMS = sensor.min_delay / 1000;
}
void loop() {
// Odstęp czasowy pomiędzy pomiarami na podst. delayMS.
delay(delayMS);
// Pobierz i wyświetl wartość temperatury.
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Błąd w odczycie temperatury!"));
}
else {
Serial.print(F("Temperatura: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
lcd.begin(16, 2);
lcd.setCursor(0,0) ;
lcd.print("Temperature:");
lcd.setCursor(0,1) ;
lcd.print(event.temperature);
lcd.print((char)223);
lcd.print("C");
delay(1500);
lcd.clear();
// Pobierz i wyświetl wartość wilgotności.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println(F("Błąd w odczycie wilgotności!"));
}
else {
Serial.print(F("Wilgotność: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
lcd.begin(16, 2);
lcd.setCursor(0,0) ;
lcd.print("Humidity:");
lcd.setCursor(0,1) ;
lcd.print(event.relative_humidity);
lcd.print("%");
delay(1500);
lcd.clear();
}
lcd.begin(16, 2);
lcd.setCursor(0,0) ;
lcd.print("Brightness:");
lcd.setCursor(0,1) ;
if (digitalRead(LDR_PIN) == LOW) {
lcd.print("Bright");
} else {
lcd.print("Dark ");
}
delay(1500);
}
}