#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <Servo.h>
Servo myservo;
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE); //ประกาศตัวแปรภาพรวมของเซนเซอร์ที่ใช้
float hum; //Humidity
float temp; //Temperature
int relay1 = 3;
int relay2 = 5;
int relay3 = 6;
int LED1 = 13;
int LED2 = 12;
int LED3 = 4;
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println("ตรวจสอบความชื้นและอุณหภูมิ");
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
myservo.attach(10);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("TOEYLY");
lcd.setCursor(2,1);
lcd.print("SE.2/3 NO.26");
delay(3000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Humidity &");
lcd.setCursor(2,1);
lcd.print("Temperature");
delay(3000);
lcd.clear();
}
void loop() {
delay(1000); //หน่วงเวลาเริ่มต้นก่อน Sensor เริ่มทำงาน
hum = dht.readHumidity();
temp = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print("%,Temperature: ");
Serial.print(temp);
Serial.println(" Celsius");
lcd.setCursor(0,0);
lcd.print("Humidity:");
lcd.setCursor(10,0);
lcd.println(hum);
lcd.setCursor(15,0);
lcd.println("%");
lcd.setCursor(1,1);
lcd.print("Temp:");
lcd.setCursor(8,1);
lcd.println(temp);
lcd.setCursor(14,1);
lcd.println("C.");
if(temp>=0&&temp<20)
{
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
}
else if(temp>=20&&temp<40)
{
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, LOW);
}
else if(temp>=40&&temp<=50)
{
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, HIGH);
}
else
{
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
}
if (hum>=40&&hum<=60)
{
myservo.write(90);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
else if (hum>60&&hum<=100)
{
myservo.write(45);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
}
else if (hum<40)
{
myservo.write(180);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
}
}