#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);
LiquidCrystal_I2C lcd(0x27,20,4);
#define LDR 2
#define Relay1  19//ควบคุมปั้มน้ำ
#define Relay2  18//ควบคุมพัดลมระบายอากาศ
#define Relay3  23//ควบคุมหลอดไฟ
#define pir  5
#define led  12
int pirStata = 0;
float G= 0.7;
float R = 50;
int Read = 0;
int show;
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(LDR, INPUT);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
}

void loop() {
//เซ็นเซอร์จับแสง LDR
Read = analogRead(LDR);
float voltage = Read / 819.8053201970443;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(R * 1e3 * pow(10,G) / resistance,(1 / G));
lcd.setCursor(0,2);
lcd.print("LUX : "+String(lux));
delay(1000);

//เซ็นเซอร์วัดอุณหภูมิ DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(0,0);
lcd.print("temperature : "+String(temperature));
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("humidity : "+String(humidity));
lcd.print("%");



//เซ็นเซอร์จับความเคลื่อนไหว
pirStata = digitalRead(pir);

//การควบคุมการทำงานของRelay
if(temperature > 45 && humidity < 40){
digitalWrite(Relay1, HIGH);//ปั้มน้ำเปิด
digitalWrite(Relay2, LOW);//พัดลมระบายอากาศปิด
}
else if(humidity > 60){
digitalWrite(Relay1, LOW);//ปั้มน้ำปิด
digitalWrite(Relay2, HIGH);//พัดลมระบายอากาศเปิด
}
else{
digitalWrite(Relay1, LOW);//ปั้มน้ำปิด
digitalWrite(Relay2, LOW);//พัดลมระบายอากาศปิด
}

if(lux< 20){
  digitalWrite(Relay3, HIGH);//หลอดไฟเปิด

}
else{
   digitalWrite(Relay3, LOW);//หลอดไฟปิด
}

//ควบคุมเซ็นเซอร์ตรวจจับความเคลื่อนไหว
if(pirStata == HIGH){
digitalWrite(led, HIGH);//เปิดไฟเรือนเพาะเห็ด
delay(60000);
}
else if(pirStata == LOW){
digitalWrite(led, LOW);//ปิดไฟเรือนเพาะเห็ด
}
}
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module