#include <Servo.h>
const int ledMerah = 2; // LED Merah (Tertutup)
const int ledHijau = 3; // LED Hijau (Terbuka)
const int buzzer1 = 4; // Buzzer untuk terbuka
const int buzzer2 = 5; // Buzzer untuk tertutup
const int trigPin = 6; // Pin Trigger Sensor Ultrasonik
const int echoPin = 7; // Pin Echo Sensor Ultrasonik
const int motorPin = 9; // Pin Motor Servo
Servo motorServo; // Objek Servo untuk mengontrol motor
long durasi; // Durasi waktu gelombang ultrasonik
int jarak; // Jarak yang terdeteksi oleh sensor
void setup()
{
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT);
pinMode(buzzer1, OUTPUT);
pinMode(buzzer2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
motorServo.attach(motorPin);
Serial.begin(9600);
}
void loop()
{
// Mengirim sinyal trigger
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca waktu echo
durasi = pulseIn(echoPin, HIGH);
// Menghitung jarak berdasarkan durasi
jarak = durasi * 0.0344 / 2;
Serial.print("Jarak: ");
Serial.println(jarak); // Menampilkan jarak pada Serial Monitor
if (jarak < 150) { // Jika jarak kurang dari 150 cm (Palang Terbuka)
// Menyalaakan LED Hijau dan motor servo terbuka
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, HIGH);
motorServo.write(0); // Menggerakkan motor servo 0 derajat (terbuka)
tone(buzzer1, 1000); // Buzzer 2 bunyi (terbuka)
noTone(buzzer2); // Buzzer 1 mati
} else { // Jika jarak lebih dari atau sama dengan 150 cm (Palang Tertutup)
// Menyalaakan LED Merah dan motor servo tertutup
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
motorServo.write(90); // Menggerakkan motor servo 90 derajat (tertutup)
tone(buzzer2, 500); // Buzzer 1 bunyi (tertutup)
noTone(buzzer1); // Buzzer 2 mati
}
delay(500); // Delay untuk mencegah pembacaan sensor yang terlalu cepat
}