#include "DHT.h" // Dołączenie biblioteki DHT
#define DHTPIN 4 // Definiuje pin numer 4 jako ten, do którego podłączony jest czujnik DHT
#define DHTTYPE DHT22 // Definiuje typ czujnika jako DHT22
#define RED_LED_PIN 10 // Definiuje pin numer 10 jako ten, do którego podłączona jest czerwona dioda LED
#define GREEN_LED_PIN 11 // Definiuje pin numer 11 jako ten, do którego podłączona jest zielona dioda LED
#define BLUE_LED_PIN 12 // Definiuje pin numer 12 jako ten, do którego podłączona jest niebieska dioda LED
#define TEMPERATURE_THRESHOLD 24.0 // Definiuje próg temperatury w stopniach Celsjusza
#define HUMIDITY_THRESHOLD 40.0 // Definiuje próg wilgotności w procentach
DHT dht(DHTPIN, DHTTYPE); // Tworzy obiekt dht klasy DHT, inicjalizując go z użyciem pinu 4 i typu DHT22
void setup() {
Serial.begin(9600); // Inicjalizuje komunikację szeregową z prędkością 9600 bodów na sekundę
dht.begin(); // Inicjalizuje czujnik DHT22, przygotowując go do odczytu danych
pinMode(RED_LED_PIN, OUTPUT); // Ustawia pin czerwoną diodę LED jako wyjście
pinMode(GREEN_LED_PIN, OUTPUT); // Ustawia pin zieloną diodę LED jako wyjście
pinMode(BLUE_LED_PIN, OUTPUT); // Ustawia pin niebieską diodę LED jako wyjście
digitalWrite(RED_LED_PIN, LOW); // Wyłącza czerwoną diodę LED na początku
digitalWrite(GREEN_LED_PIN, LOW); // Wyłącza zieloną diodę LED na początku
digitalWrite(BLUE_LED_PIN, LOW); // Wyłącza niebieską diodę LED na początku
}
void loop() {
float t = dht.readTemperature(); // Odczytuje temperaturę z czujnika i zapisuje ją do zmiennej t
float h = dht.readHumidity(); // Odczytuje wilgotność z czujnika i zapisuje ją do zmiennej h
if (isnan(t) || isnan(h)) { // Sprawdza, czy odczytane wartości są liczbami
Serial.println("Blad odczytu z czujnika DHT!"); // Wyświetla komunikat o błędzie na monitorze szeregowym
} else {
Serial.print("Temperatura [°C]: "); // Wysyła tekst "Temperatura [°C]: " do monitora szeregowego
Serial.print(t); // Wysyła wartość temperatury t do monitora szeregowego
Serial.print(" Wilgotnosc [%]: "); // Wysyła tekst "Wilgotnosc [%]: " do monitora szeregowego
Serial.print(h); // Wysyła wartość wilgotności h do monitora szeregowego
Serial.println(); // Dodaje nową linię w monitorze szeregowym
if (t == TEMPERATURE_THRESHOLD && h == HUMIDITY_THRESHOLD) { // Sprawdza, czy temperatura wynosi 24°C i wilgotność wynosi 40%
digitalWrite(RED_LED_PIN, LOW); // Wyłącza czerwoną diodę LED
digitalWrite(GREEN_LED_PIN, HIGH); // Włącza zieloną diodę LED
digitalWrite(BLUE_LED_PIN, LOW); // Wyłącza niebieską diodę LED
} else if (t > TEMPERATURE_THRESHOLD) { // Sprawdza, czy temperatura przekracza 24°C
digitalWrite(RED_LED_PIN, HIGH); // Włącza czerwoną diodę LED
digitalWrite(GREEN_LED_PIN, LOW); // Wyłącza zieloną diodę LED
digitalWrite(BLUE_LED_PIN, LOW); // Wyłącza niebieską diodę LED
} else if (t < TEMPERATURE_THRESHOLD) { // Sprawdza, czy temperatura jest poniżej 24°C
digitalWrite(RED_LED_PIN, LOW); // Wyłącza czerwoną diodę LED
digitalWrite(GREEN_LED_PIN, LOW); // Wyłącza zieloną diodę LED
digitalWrite(BLUE_LED_PIN, HIGH); // Włącza niebieską diodę LED
}
}
delay(2000); // Wstrzymuje działanie programu na 2000 milisekund (2 sekundy)
}