#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
//LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES);
#define LEDGreen 2
#define LEDRed 3
#define Buzzer 4
#define DHT_PIN 6
#define DHT_TYPE DHT22
#define sensorMIN 0
#define sensorMAX 512
#define Threshold 300
DHT dht(DHT_PIN,DHT_TYPE);
int value = 0 ; //variable to store the sensor value
int level = 0 ; //variable to store the water level
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
Serial.begin(9600);
pinMode(Buzzer, OUTPUT);
pinMode(LEDGreen, OUTPUT);
pinMode(LEDRed, OUTPUT);
digitalWrite(LEDGreen, LOW);
digitalWrite(LEDRed, LOW);
dht.begin();
lcd.setCursor(6,0);
lcd.print("Welcome");
lcd.setCursor(2,1);
lcd.print("TEMPT. & HUMIDITY");
lcd.setCursor(5, 2);
lcd.print("SENSOR");
lcd.setCursor(7, 3);
lcd.print("Enjoy!");
delay(4000);
lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
//START
noTone(Buzzer);
digitalWrite(LEDGreen, LOW);
digitalWrite(LEDRed, LOW);
value = analogRead(DHT_PIN);
digitalWrite(DHT_PIN, LOW);
delay(1000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (temperature < 25 && humidity < 25) {
noTone(Buzzer);
digitalWrite(LEDGreen, HIGH);
digitalWrite(LEDRed, LOW);
Serial.print("ATTENTION!!! LOW TEMPERATURE");
lcd.setCursor(1, 3);
lcd.print("LOW TEMPERATURE ");
}
else if (temperature > 35 || humidity >35) {
tone(Buzzer,500);
digitalWrite(LEDGreen, LOW);
digitalWrite(LEDRed, HIGH);
Serial.print("ATTENTION!!! TEMPERATURE TOO HIGH. ");
lcd.setCursor(5, 3);
lcd.print("TEMP. TOO HIGH");
}
else
level = map(value,sensorMIN,sensorMAX,0,10); // to be 10 levels
Serial.print("TEMPERATURE DETECTED: ");
Serial.print(temperature);
Serial.print(" HUMIDITY: ");
Serial.println(humidity);
lcd.setCursor(0, 0);
lcd.print("TEMPERATURE: ");
lcd.setCursor(13, 0);
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("HUMIDITY : ");
lcd.setCursor(13, 1);
lcd.print(humidity);
}