#include <Servo.h>
const int gasPin = 4;
const int servoPintu = 5;
const int echoPin = 6;
const int trigPin = 7;
const int pirPin = 8;
const int servoKeran = 9;
const int Pintu = 12;
const int buzzer = 13;
Servo myPINTU;
Servo myKERAN;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT);
pinMode(gasPin, INPUT);
pinMode(Pintu, OUTPUT);
pinMode(buzzer, OUTPUT);
myPINTU.attach(servoPintu);
myKERAN.attach(servoKeran);
myPINTU.write(0);
myKERAN.write(0);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 58);
int motionDetected = digitalRead(pirPin);
int gasLevel = digitalRead(gasPin);
if (distance < 5) {
digitalWrite(Pintu, HIGH);
Serial.println("Pintu Terbuka");
myPINTU.write(180);
delay(500);
} else {
digitalWrite(Pintu, LOW);
Serial.println("Pintu Terkunci");
delay(500);
myPINTU.write(0);
}
if (motionDetected) {
myKERAN.write(180);
Serial.println("Gerakan Terdeteksi: Keran Menyala");
} else {
myKERAN.write(0);
Serial.println("Tidak ada gerakan: Keran Mati");
}
if (gasLevel) {
digitalWrite(buzzer, HIGH);
Serial.println("Gas Terdeteksi: Alarm Emergency Aktif");
} else {
digitalWrite(buzzer, LOW);
Serial.println("Gas Aman: Alarm Mati");
}
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
Serial.println(" ");
delay(500);
}