#define BLYNK_TEMPLATE_ID "TMPL6knLvr_1y"
#define BLYNK_TEMPLATE_NAME "weather monitoring system"
#define BLYNK_AUTH_TOKEN "DRuOQmNuLvtV3P9_N_rOTNgzYIfJjvTZ"
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
#define DHT_PIN 2
#define DHTTYPE DHT22
#define I2C_ADD 0x27
#define ROWS 2
#define COLS 16
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
LiquidCrystal_I2C lcd(I2C_ADD,ROWS,COLS);
DHT dht(DHT_PIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("Test Begin!!");
dht.begin();
pinMode(A3, INPUT);
Blynk.begin(auth,ssid,pass);
}
void loop() {
// delay(2000);
readDHT();
lcd.init();
lcd.backlight();
}
void readDHT(){
int h = dht.readHumidity(); // reading humidity
int t = dht.readTemperature(); //in celsius
int value = analogRead(A3); //rainfall
//checking if the error occur while reading
if(isnan(h) || isnan(t)){
Serial.println("Failed to read from DHT");
return;
}
//computing heat index
float hic = dht.computeHeatIndex(t,h);
// Serial.print("Humidity : ");
// Serial.print(String(h) + "%");
// Serial.print(" Temperature : ");
// Serial.print(String(t) + "C");
// Serial.print(" Heat Index : ");
// Serial.println(String(hic) +"C");
lcdDisplay(0, 0, String(t),String(h),String(value));
// if(t>35 || value > 500){
// warnDisp(0,0,String(t),String(valaue));
// }
if(t>35){
lcd.clear();
lcd.setCursor(0,0);
lcd.println("Too much Heat!!");
lcd.setCursor(0,1);
lcd.println("Temp:" +String(t));
}
if(value>500){
lcd.clear();
lcd.setCursor(0,0);
lcd.println("Extreme Rainfall!!");
lcd.setCursor(0,1);
lcd.println("Rainfall:" +String(value));
}
}
void lcdDisplay(int col, int row, String msg,String hum,String rain){
lcd.setCursor(col,row);
lcd.println("Temp:"+String(msg));
lcd.println("Hum:"+String(hum));
lcd.setCursor(col,row+1);
lcd.println("Rain:" +String(rain));
}
Blynk.virtualWrite(V0,h);
Blynk.virtualWrite(V1,t);
Blynk.virtualWrite(V2,rain);
// void warnDisp(int col,int row, String temp,String rain ){
// lcd.clear();
// lcd.setCursor(0,0);
// lcd.println("Extreme Rainfall!!");
// lcd.setCursor(0,1);
// lcd.println("Rainfall:" +String(value));
// }