#include <Servo.h>
// Konfigurasi Pin
const int PIR_PIN = 2; // Pin sensor PIR
const int RELAY_PIN = 3; // Pin relay
const int SERVO_PIN = 9; // Pin servo
// Konfigurasi Servo
Servo servo;
int servoPos = 0; // Posisi awal servo
// Konfigurasi waktu
unsigned long previousMillis = 0; // Waktu sebelumnya
const long interval = 1000; // Interval waktu untuk mematikan kipas angin (ms)
// Fungsi untuk mengontrol kipas angin
void controlFan(bool state, int speed)
{
digitalWrite(RELAY_PIN, state); // Mengontrol relay untuk menghidupkan atau mematikan kipas angin
servo.write(speed); // Mengatur kecepatan putaran kipas angin menggunakan servo
}
void setup()
{
pinMode(PIR_PIN, INPUT); // Mengatur pin sensor PIR sebagai input
pinMode(RELAY_PIN, OUTPUT); // Mengatur pin relay sebagai output
servo.attach(SERVO_PIN); // Menghubungkan servo ke pin
controlFan(false, 0); // Mematikan kipas angin dan mengatur kecepatan awal servo ke 0
}
void loop()
{
int sensorValue = digitalRead(PIR_PIN); // Membaca nilai sensor PIR
if (sensorValue == HIGH) // Jika sensor mendeteksi gerakan
{
controlFan(true, 90); // Menghidupkan kipas angin dengan kecepatan 90 derajat servo
previousMillis = millis(); // Menyimpan waktu saat ini
}
// Jika sudah melewati interval waktu dan kipas angin masih menyala, matikan kipas angin
if (millis() - previousMillis >= interval && digitalRead(RELAY_PIN) == HIGH)
{
controlFan(false, 0); // Mematikan kipas angin dan mengatur kecepatan servo ke 0
}
}