#define ECHO_PIN 3
#define TRIG_PIN 2
#define pinBuzzer 5
#define LEDmerah 13

#include <Servo.h>

Servo myservo;

int val;
bool a = true ;

float bacaJarakCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034/2;
}

void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(LEDmerah, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(115200);
pinMode(pinBuzzer, OUTPUT);
myservo.attach(9);

}

void loop() {
float jarak = bacaJarakCM();  
Serial.print("Jarak Terukur : ");
Serial .println(bacaJarakCM());

 if ( jarak <= 100){             //jika jarak benda kurang dari 1m
    myservo.write(0);            //perintah menggerakkan servo ke derajat yang di tentukan 
    digitalWrite(LEDmerah, LOW); //perintah membaca nilai dari pin arduino untuk LEDmerah bernilai LOW
    delay(15);                   
    tone(pinBuzzer, 500);        //menyalakan buzzer pada 1000hz
    delay(200);                   //jeda waktu 200ms
    tone(pinBuzzer, 700);         //menyalakan buzzer pada 1000hz
    delay(500);                   //jeda waktu 200ms
    tone(pinBuzzer, 500);         //menyalakan buzzer pada 1000hz
    delay(200);                   //jeda waktu 200ms

  if(val==90) {                  
    val = 0;                     
  a = true;}                      //mendeklarasikan vaiable a benar
  }
  else {                 
  digitalWrite(LEDmerah, HIGH);   //perintah membaca nilai dari pin arduino untuk LEDmerah bernilai LOW
  noTone(pinBuzzer);             //menghentikan nada/suara pada buzzer
  if (a == true) {               
  val = 90;                      
  myservo.write(val);            
}
    if(val==90)                  
    {a = false;}                

  }
}