// Include necessary libraries
#include <Arduino.h>
// Define pins
#define PIR_PIN 13 // Pin untuk sensor PIR
#define TRIG_PIN 27 // Pin Trig untuk sensor ultrasonik
#define ECHO_PIN 26 // Pin Echo untuk sensor ultrasonik
#define BUZZER_PIN 25 // Pin untuk buzzer
#define LED1_PIN 4 // Pin untuk LED 1
#define LED2_PIN 2 // Pin untuk LED 2
// Variables
long duration;
int distance;
bool motionDetected = false;
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Set pin modes
pinMode(PIR_PIN, INPUT); // Sensor PIR sebagai input
pinMode(TRIG_PIN, OUTPUT); // Pin Trig sensor ultrasonik sebagai output
pinMode(ECHO_PIN, INPUT); // Pin Echo sensor ultrasonik sebagai input
pinMode(BUZZER_PIN, OUTPUT);// Buzzer sebagai output
pinMode(LED1_PIN, OUTPUT); // LED 1 sebagai output
pinMode(LED2_PIN, OUTPUT); // LED 2 sebagai output
// Initial state: all LEDs and buzzer off
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
digitalWrite(LED1_PIN, LOW); // Matikan LED 1
digitalWrite(LED2_PIN, LOW); // Matikan LED 2
// Serial output for initialization
Serial.println("Motion Detection System Initialized");
}
void loop() {
// Check if motion is detected by the PIR sensor
motionDetected = digitalRead(PIR_PIN);
Serial.print("PIR Sensor: ");
Serial.println(motionDetected ? "Motion Detected" : "No Motion");
if (motionDetected) {
// If motion is detected, activate the ultrasonic sensor
digitalWrite(TRIG_PIN, LOW); // Kirim sinyal LOW ke pin Trig
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); // Kirim sinyal HIGH ke pin Trig
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW); // Kirim sinyal LOW ke pin Trig untuk menghentikan pengiriman
// Read the echo pin
duration = pulseIn(ECHO_PIN, HIGH); // Baca durasi pulsa HIGH pada pin Echo
// Calculate the distance
distance = duration * 0.034 / 2; // Hitung jarak berdasarkan durasi pulsa
Serial.print("Ultrasonic Sensor Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Check if the distance is less than a threshold (e.g., 100 cm)
if (distance < 100) {
// If an object is detected, activate the buzzer and blink the LEDs alternately
digitalWrite(BUZZER_PIN, HIGH); // Nyalakan buzzer
Serial.println("Object Detected! Buzzer and LEDs activated.");
// Blink LEDs alternately
digitalWrite(LED1_PIN, HIGH); // Nyalakan LED 1
digitalWrite(LED2_PIN, LOW); // Matikan LED 2
delay(200);
digitalWrite(LED1_PIN, LOW); // Matikan LED 1
digitalWrite(LED2_PIN, HIGH); // Nyalakan LED 2
delay(200);
} else {
// If no object is detected, turn off the buzzer and LEDs
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
digitalWrite(LED1_PIN, LOW); // Matikan LED 1
digitalWrite(LED2_PIN, LOW); // Matikan LED 2
Serial.println("No Object Detected. Buzzer and LEDs turned off.");
}
} else {
// If no motion is detected, ensure the buzzer and LEDs are off
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
digitalWrite(LED1_PIN, LOW); // Matikan LED 1
digitalWrite(LED2_PIN, LOW); // Matikan LED 2
}
// Small delay to avoid bouncing
delay(1000);
}