#define TRIG_PIN 9 // Pin trigger sensor ultrasonik
#define ECHO_PIN 10 // Pin echo sensor ultrasonik
#define RELAY_PIN 13 // Pin kontrol relay
#define DISTANCE_THRESHOLD 20 // Jarak threshold untuk mengaktifkan kipas (dalam sentimeter)
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Memastikan relay nonaktif saat awal
}
void loop() {
long duration, distance;
// Mengirim sinyal ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Menerima waktu pantulan
duration = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak
distance = duration * 0.034 / 2;
// Menampilkan jarak pada Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Mengaktifkan atau menonaktifkan kipas berdasarkan jarak yang terdeteksi
if (distance < DISTANCE_THRESHOLD) {
// Jika jarak lebih kecil dari threshold, aktifkan kipas
digitalWrite(RELAY_PIN, HIGH); // Mengaktifkan relay (menghidupkan kipas)
Serial.println("Fan turned on");
} else {
// Jika jarak lebih besar dari threshold, nonaktifkan kipas
digitalWrite(RELAY_PIN, LOW); // Menonaktifkan relay (mematikan kipas)
Serial.println("Fan turned off");
}
delay(1000); // Delay sebelum membaca sensor lagi
}