#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);
Adafruit_SSD1306 display = Adafruit_SSD1306(128,64,&Wire);
#define LDR 2
int Relay1 = 19;//ควบคุมปั้มน้ำ
int Relay2 = 18;//ควบคุมพัดลมระบายอากาศ
int Relay3 = 23;//ควบคุมหลอดไฟ
int pirStata = 0;
int pir = 5;
int led = 12;
float ADC_value = 0.0048828125;
int Read = 0;
void setup() {
Serial.begin(115200);
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC,0x3c);
display.clearDisplay();
display.setTextColor(WHITE,BLACK);
pinMode(LDR, INPUT);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
//เซ็นเซอร์จับแสง LDR
Read = analogRead(LDR);
Serial.print("Reading : "+String(Read));
delay(1000);
int lux = int((250.000000/(ADC_value*Read))-50.000000);
Serial.println("LUX : "+String(lux));
delay(1000);
//เซ็นเซอร์วัดอุณหภูมิ DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
display.clearDisplay();
display.setTextColor(WHITE,BLACK);
display.setCursor(10,20);
display.print("temperature ="+String(temperature));
display.print("C");
display.setCursor(10,35);
display.print("humidity ="+String(humidity));
display.print("%");
display.display();
delay(1000);
//เซ็นเซอร์จับความเคลื่อนไหว
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);//เปิดไฟหน้าเรือนเพาะเห็ด
}
else if(pirStata == LOW){
digitalWrite(led, LOW);//ปิดไฟหน้าเรือนเพาะเห็ด
}
}