#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 20, 4);
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include<Servo.h>
Servo arm;
int pos;
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
dht.begin();
arm.attach(9);
}
void loop()
{
float rh = dht.readHumidity();
const float BETA = 3950;
int rt1 = analogRead(A0);
int rt2 = analogRead(A1);
int rt3 = analogRead(A2);
float t1 = 1/(log(1/(1023.0/rt1-1))/BETA+1.0/298.15)-273.15;
float t2 = 1/(log(1/(1023.0/rt2-1))/BETA+1.0/298.15)-273.15;
float t3 = 1/(log(1/(1023.0/rt3-1))/BETA+1.0/298.15)-273.15;
float avt = (t1+t2+t3)/3.0;
if (rh >= 70 && avt >= 22 && rh <= 90 && avt >= 28)
{
lcd.setCursor(0,3);
lcd.print("optimal condition");
}
else if (rh < 70 && avt >= 22 && avt <= 28)
{
lcd.setCursor(0,3);
lcd.print("relative humidity low");
}
else if (rh >= 70 && rh <= 90 && avt < 22)
{
lcd.setCursor(0,3);
lcd.print("temperature low");
}
else if (rh > 90 && avt >= 22 && avt <= 28)
{
lcd.setCursor(0,3);
lcd.print("relative humidity high");
}
else if (rh >= 70 && rh <=90 && avt > 28)
{
lcd.setCursor(0,3);
lcd.print("temperature high");
}
else {
lcd.setCursor(0,3);
lcd.print("critical condition");
arm.write(30);
}
lcd.setCursor(0,0);
lcd.print("ave T ");
lcd.setCursor(3,0);
lcd.print(avt, 1);
lcd.setCursor(10,0);
lcd.print("RH ");
lcd.setCursor(13,0);
lcd.print(rh, 1);
lcd.setCursor(0,1);
lcd.print("T1 ");
lcd.setCursor(3,1);
lcd.print(t1,1);
lcd.setCursor(10,1);
lcd.print("T2 ");
lcd.setCursor(13,1);
lcd.print(t2,1);
lcd.setCursor(0,2);
lcd.print("T3 ");
lcd.setCursor(3,2);
lcd.print(t3,1);
delay(1000);
}