#include <Servo.h> // Memanggil library dari servo dengan nama Servo.h
Servo servoku; // Memberikan nama variabel untuk perintah Servo menjadi servoku
int echoPin = 2; // Deklarasi pin echo
int trigPin = 3; // Deklarasi pin trig
void setup() {
pinMode(echoPin, INPUT); // Setup pin echo sebagai input untuk membaca input dari sensor ultrasonik
pinMode(trigPin, OUTPUT); // Setup pin trig sebagai output untuk trigger ke ultrasonik untuk memancarkan gelombang ultrasonik
servoku.attach(5); // Alamat pin dari motor servo (harus terhubung ke pin PWM)
}
float bacaUltrasonik() { // Fungsi untuk membaca jarak pada sensor ultrasonik
digitalWrite(trigPin, LOW); // Set trigPin ke low agar gelombang ultrasonik tidak dipancarkan terlebih dahulu
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Set trigPin ke high untuk memicu sensor ultrasonik memancarkan gelombangnya
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Set trigPin ke low untuk membuat gelombang ultrasonik berhenti dipancarkan
int durasi = pulseIn(echoPin, HIGH); // Mengecek interval waktu echoPin menerima sinyal high setelah gelombang dipancarkan
return durasi * 0.034 / 2; // Rumus konversi durasi ultrasonik ke jarak dari rumus dasar t * 340 / 2
}
void loop() {
float jarak = bacaUltrasonik(); // Memasukkan hasil fungsi bacaUltrasonik ke dalam variabel jarak
if (jarak <= 150) { // Mengecek apakah ada kereta yang lewat di depan sensor ultrasonik atau tidak
servoku.write(90); // Perintah membuka palang memposisikan servo di sudut 90 derajat
} else {
servoku.write(0); // Perintah menutup portal, memposisikan servo di sudut 0 derajat
}
}