#include <Servo.h> //servo library
Servo servo;
int trigPin = 3; //input sensor ultrasonic (1)
int echoPin = 2; //input sensor ultrasonic (1)
int trigPin1 = 5; //input sensor ultrasonic (2)
int echoPin1 = 4; //input sensor ultrasonic (2)
int servoPin = 6; //input motor servo
int buzzer = 7; //input buzzer
int led1 = 8; //input LED RED
int led2 = 10; //input LED WHITE
int led3 = 9; //input LED GREEN
long duration, dist, average;
long aver[3]; //array for average
long duration1, dist1, average1;
long aver1[3]; //array for average
void setup() {
Serial.begin(9600);
servo.attach(servoPin);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(trigPin1,OUTPUT);
pinMode(echoPin1,INPUT);
pinMode(buzzer,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
servo.write(0); //tutup aktif
delay(100);
servo.detach();
}
void measure() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
dist = (duration /2) / 29.1; //rumus sensor ultrasonic
}
void measure1() {
digitalWrite(trigPin1, LOW);
delayMicroseconds(5);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin1, LOW);
pinMode(echoPin1, INPUT);
duration1 = pulseIn(echoPin1, HIGH);
dist1 = (duration1 /2) / 29.1; //rumus sensor ultrasonic
}
void loop() {
for (int i=0;i<=2;i++) {
measure();
aver[i]=dist;
delay(10);
}
dist=(aver[0]+aver[1]+aver[2])/3;
for (int i=0;i<=2;i++) {
measure1();
aver1[i]=dist1;
delay(100);
}
{
digitalWrite(8,HIGH);
}
dist1=(aver1[0]+aver1[1]+aver1[2])/3;
if ( dist <=35 ) { //mengatur jarak dibawah 60cm (membuka)
servo.write(100);
digitalWrite(buzzer,LOW);
delay(1000);
}
if ( dist>35 ) { //mengatur jarak diatas 60cm (menutup)
servo.attach(servoPin);
servo.write(0);
}
if ( dist1 < 3 ) { //mengatur jarak sama dengan 5cm (buzzer dan led merah aktif)
digitalWrite(buzzer,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay (1000);
digitalWrite(buzzer,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
Serial.print(dist);
Serial.println (" CM");
Serial.print(dist1);
Serial.println (" CM");
// kedua coding diatas untuk membaca jarak di serial monitor
delay(1000); //delay 1s saat membaca pada serial monitor
}