#include <Servo.h> //memanggil library dari servo dengan nama Servo.h
Servo servoku; //memberikan nama variabel untuk perintah Servo menjadi servoku, variabelnya bisa diubah-ubah sesuai keinginan tidak harus servoku
int echoPin = 2; //deklarasi pin echo
int trigPin = 3; //deklarasi pin trig
int buzzer = 4; //deklarasi pin buzzer
void setup() {
// put your setup code here, to run once:
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 emmancarkan gelombang ultrasonik
pinMode(buzzer, OUTPUT); //setup buzzer sebagai output
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 meancarkan 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() {
// put your main code here, to run repeatedly:
float jarak = bacaUltrasonik(); //memasukkan hasil fungsi bacaUltrasonik ke dalam variabel jarak
if(jarak<=047){ //mengecek apakah ada kereta yang lewat di depan sensor ultrasonik atau tidak, jika iya yang di dalam if akan dieksekusi
tone(buzzer, 200);
tone(buzzer, 175);
servoku.write(90); //perintah membuka palang memposisikan servo di sudut 90 derajat
}
else{
noTone(buzzer);
servoku.write(0); //perintah menutup portal, memposisikan servo di sudut 0 derajat
}
}
//sebenarnya untuk fungsi ideal bisa menggunakan dua sensor ultrasonik dipasangkan sebelum palang dan sesudah palang kereta api
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
servo1:GND
servo1:V+
servo1:PWM
bz1:1
bz1:2
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2