#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);//ปิดไฟเรือนเพาะเห็ด
}
}