// Definisikan pin untuk relay palang kereta api
const int palangPin = 2;
// Definisikan untuk sensor ultrasonik
const int trigPin = 11;
const int echoPin = 12;
// Definisikan batas jarak untuk sensor ultrasonik
const int batasJarak = 20;
void setup() {
// Inisialisasi pin relay sebagai output
pinMode(palangPin, OUTPUT);
// Inisialisasi pin sensor ultrasonik
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Non-aktifkan palang kereta api saat awal
digitalWrite(palangPin, LOW);
// Serial communication untuk debugging
Serial.begin (9600);
}
void loop() {
// Kirim tanda tangan ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Baca tanda tangan ultrasonik
long durasi = pulseIn(echoPin, HIGH);
// Hitung jarak
int jarak = durasi * 0.034 / 2;
// Tampilkan jarak ke serial monitor
Serial.print("Jarak: ");
Serial.println(jarak);
// Jika kereta lebih dekat dari batas jarak, aktifkan palang kereta api
if (jarak < batasJarak) {
digitalWrite(palangPin, HIGH);
delay(5000); // Tunggu 5 detik sebelum non-aktifkan palang
} else {
digitalWrite(palangPin, LOW);
}
delay(100); // Tunggu 100 ms sebelum mengulang
}