#include <DHT.h>
#define DHTPIN 2 // Pin where the DHT sensor is connected
#define DHTTYPE DHT11 // Type of DHT sensor (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor
const int yellowLEDPin = 3; // Yellow LED connected to digital pin 3
const int greenLEDPin = 4; // Green LED connected to digital pin 4
const int blueLEDPin = 5; // Blue LED connected to digital pin 5
const int redLEDPin = 6; // Red LED connected to digital pin 6
const int buzzerPin = 7; // Buzzer connected to digital pin 7
void setup() {
Serial.begin(9600);
pinMode(yellowLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
delay(10000); // Wait for 10 seconds between measurements
float humidity = dht.readHumidity(); // Read humidity value from the sensor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
// Check humidity levels and control LEDs accordingly
if (isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
// If there's an error, blink all LEDs and buzz the buzzer 3 times with a 500ms interval
blinkAllLEDs(3, 500);
buzzBuzzer(3);
} else {
if (humidity <= 30.0) {
turnOnLED(yellowLEDPin);
turnOffLED(greenLEDPin);
turnOffLED(blueLEDPin);
turnOffLED(redLEDPin);
buzzBuzzer(1); // Buzz once
} else if (humidity <= 59.0) {
turnOffLED(yellowLEDPin);
turnOnLED(greenLEDPin);
turnOffLED(blueLEDPin);
turnOffLED(redLEDPin);
buzzBuzzer(2); // Buzz twice
} else if (humidity <= 79.0) {
turnOffLED(yellowLEDPin);
turnOffLED(greenLEDPin);
turnOnLED(blueLEDPin);
turnOffLED(redLEDPin);
buzzBuzzer(4); // Buzz four times
} else {
turnOffLED(yellowLEDPin);
turnOffLED(greenLEDPin);
turnOffLED(blueLEDPin);
turnOnLED(redLEDPin);
buzzBuzzer(8); // Buzz eight times
}
}
}
void turnOnLED(int pin) {
digitalWrite(pin, HIGH);
}
void turnOffLED(int pin) {
digitalWrite(pin, LOW);
}
void blinkAllLEDs(int times, int interval) {
for (int i = 0; i < times; ++i) {
digitalWrite(yellowLEDPin, HIGH);
digitalWrite(greenLEDPin, HIGH);
digitalWrite(blueLEDPin, HIGH);
digitalWrite(redLEDPin, HIGH);
delay(interval);
digitalWrite(yellowLEDPin, LOW);
digitalWrite(greenLEDPin, LOW);
digitalWrite(blueLEDPin, LOW);
digitalWrite(redLEDPin, LOW);
delay(interval);
}
}
void buzzBuzzer(int times) {
for (int i = 0; i < times; ++i) {
digitalWrite(buzzerPin, HIGH);
delay(100);
digitalWrite(buzzerPin, LOW);
delay(100);
}
}