#define ECHO_PINA 3
#define TRIG_PINA 2
#define ECHO_PINB 6
#define TRIG_PINB 4
#define pinBuzzer 5
#define led1 12
#define led2 13
#include <Servo.h>
Servo myservo;
int potpin = 0;
int val;
float readDistanceCMA() {
digitalWrite(TRIG_PINA, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PINA, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PINA, LOW);
int durationA = pulseIn(ECHO_PINA, HIGH);
return durationA * 0.034 / 2;
}
float readDistanceCMB() {
digitalWrite(TRIG_PINB, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PINB, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PINB, LOW);
int durationB = pulseIn(ECHO_PINB, HIGH);
return durationB * 0.034 / 2;
}
void setup() {
pinMode(TRIG_PINA, OUTPUT);
pinMode(ECHO_PINA, INPUT);
pinMode(TRIG_PINB, OUTPUT);
pinMode(ECHO_PINB, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.begin(115200);
pinMode(pinBuzzer, OUTPUT);
myservo.attach(9);
}
void loop() {
float distanceA = readDistanceCMA();
Serial.print("Measured distance: ");
Serial.println(readDistanceCMA());
float distanceB = readDistanceCMB();
Serial.print("Measured distance: ");
Serial.println(readDistanceCMB());
//kereta datang
if(distanceA <= 200 || distanceB <=200){
myservo.write(90);
delay(15);
tone(pinBuzzer, 1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
tone(pinBuzzer, 500);
delay(200);
}
//kereta lewat
if(distanceA > 200 && distanceB > 200){
myservo.write(0);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
noTone(pinBuzzer);
}
/* else{
myservo.write(0);
noTone(pinBuzzer);
}
*/
}