#include <Servo.h>
#define trigPin 2 // Pin trigger sensor ultrasonik
#define echoPin 3 // Pin echo sensor ultrasonik
#define ledPin 7 // Pin LED
#define buzzerPin 8 // Pin buzzer
#define servoPin 9 // Pin untuk servo motor
Servo myServo; // Inisialisasi objek servo
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
myServo.attach(servoPin); // Menghubungkan servo ke pin 9
}
void loop() {
long duration, distance;
// Mengirim sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima waktu pantulan gelombang ultrasonik
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak berdasarkan waktu yang diterima
distance = (duration / 2) / 29.1; // Dalam satuan cm
Serial.print("Jarak: ");
Serial.println(distance);
// Jika kereta berjarak 30 cm (contoh 30 cm)
if (distance <= 30) {
// Mengatur LED merah menyala
digitalWrite(ledPin, HIGH);
// Mengatur bunyi buzzer
tone(buzzerPin, 30); // Frekuensi bunyi buzzer
// Menggerakkan servo untuk menutup portal
myServo.write(45); // Menggerakkan servo ke posisi menutup
// Menunggu sebentar sebelum menutup portal (misalnya, 2detik)
delay(2000);
// Menutup portal
digitalWrite(ledPin, LOW); // Matikan LED
noTone(buzzerPin); // Matikan bunyi buzzer
myServo.write(0); // Menggerakkan servo ke posisi membuka
}
}