#include <DHT.h>
#include <Servo.h>
#define DHTpin A1
#define DHTTYPE DHT22
#define servopin A3
#define wateropen 20
#define waterclose 90
const int ledApin = 4;
const int ledBpin = 7;
const int buzzpin = 2;
bool WaterActive = false;
bool WaterDisabled = false;
float hum;
float temp;
Servo lockservo;
DHT dht(DHTpin, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledApin, OUTPUT);
pinMode(ledBpin, OUTPUT);
pinMode(buzzpin, OUTPUT);
lockservo.attach(servopin);
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
hum = dht.readHumidity();
temp= dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celcius");
delay(2000);
if (hum <= 50 && !WaterDisabled){
WaterActive = true;
} else {
WaterActive = false;
}
if (WaterActive) {
digitalWrite(ledApin, HIGH);
digitalWrite(ledBpin, LOW);
lockservo.write(wateropen);
tone(buzzpin, 1000); // สร้างเสียง
} else {
// หากอยู่นอกระยะให้ปิดเสียงและไฟ
digitalWrite(ledApin, LOW);
digitalWrite(ledBpin, HIGH);
lockservo.write(waterclose);
noTone(buzzpin);
}
if (hum > 50) {
WaterDisabled = false;
}
}