#include "DHT.h"
#define DHTPIN 26 //ตัวแปรสำหรับควบคุม DHT
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int pingPin = 18; //ตัวแปรสำหรับควบคุม Ultrasonic
const int echoPin = 19;
int led1 = 32; //ตัวแปรสำหรับควบคุม LED
int led2 = 33;
int led3 = 35;
int buzzer = 22; //ตัวแปรสำหรับควบคุมบัสเซอร์
int pir = 21; //ตัวแปรสำหรับควบคุมเซ็นต์เซอร์ตรวจจับความเคลือนไหว
int relay = 14; //ตัวแปรสำหรับควบคุมรีเลย์
void setup() {
pinMode(pingPin, OUTPUT); //ตั้งค่า Digital pin
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(pir, INPUT);
pinMode(relay, OUTPUT);
Serial.begin(9600); //เริ่มเชื่อมต่อ Serial port
dht.begin(); //เร่มเชื่อมต่อ DHT Sensor
}
void loop() {
float h = dht.readHumidity(); //ตัวแปรเก็บค่าความชื้น
float t = dht.readTemperature(); //ตัวแปรเก็บค่าอุณหภูมิ
long duration, inches, cm; //ตัวแปรเก็บค่าระยะที่ Ultrasonic วัดได้
digitalWrite(pingPin, LOW); //สร้างคลื่นพัลส์
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
duration = pulseIn(echoPin, HIGH); //เก็บเวลาที่คลื่นพัลส์เดินทางไปกลับ
cm = duration / 29 / 2; //แปลงเวลาให้เป็นเซนติเมตร
int pir_state = digitalRead(pir); //เก็บค่าสถานะของเซนต์เซอร์ตรวจจับความเคลื่อนไหว
if (c >= 25) { //ถ้าระยะมากกว่าหรือเท่ากับ 25 cm ให้เปิดพัดลม
Serial.println("Fan On");
digitalWrite(relay, 1);
} else { //นอกนั้นให้ปิดพัดลม
Serial.println("Fan Off");
digitalWrite(relay, 0);
}
if (cm > 20) { //ถ้าระยะมากกว่า 20 cm ให้ LED1 ติด
digitalWrite(led1, HIGH);
} else if (cm > 30) { //ถ้าระยะมากกว่า 20 cm ให้ LED2 ติด
digitalWrite(led2, HIGH);
} else if (cm > 40) { //ถ้าระยะมากกว่า 20 cm ให้ LED3 ติด
digitalWrite(led3, HIGH);
} else { //นอกนั้นให้ LED ดับทั้งหมด
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
if (pir_state == 0) { //ถ้ามีการเคลื่อนไหวให้ Buzzer ดัง
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
}