#define led 13 //Membuat variabel LED ke-pin 10
#define echoPin 12 //Membuat variabel Echo ke-pin 11
#define trigPin 11 //Membuat variabel Trig ke-pin 12
long duration, distance; //Membuat variabel untuk durasi dan jarak
#include <Servo.h>

Servo myservo;

float read_srf(int pintriger, int pinecho) {
  long durasi;
  float jarak;
  digitalWrite(pintriger, LOW);
  delayMicroseconds(2);
  digitalWrite(pintriger, HIGH);
  delayMicroseconds(10);
  digitalWrite(pintriger, LOW);
  delayMicroseconds(2);

  durasi = pulseIn(pinecho, HIGH);
  jarak = durasi / 58.2;

  return jarak;
}

void setup() {
  Serial.begin (9600); //Berfungsi untuk komunikasi serial dengan komputer
  pinMode(trigPin, OUTPUT); //Set varibel trigPin sebagai output
  pinMode(echoPin, INPUT); //Set variabel echoPin sebagai input
  pinMode(led, OUTPUT); //Set variabel led sebagai output
  myservo.attach(9);
}

void loop() {
   //Program agar Trig mengirim sinyal ultrasonik
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
 
  duration = pulseIn(echoPin, HIGH); //Echo menerima sinyal ultrasonik
  distance = (duration/2)/29.1; //Rumus mengubah durasi menjadi jarak (cm)
  int jarak = read_srf(trigPin, echoPin);
  //Program jika jarak kurang dari 10 CM maka LED akan menyala
  if(distance<=200){
    digitalWrite(led, HIGH);
    myservo.write(180);
  }else{
    digitalWrite(led, LOW);
    myservo.write(0);
  }
 
  //Meanmpilkan jarak di serial monitor dengan jeda 0.05 detik
  Serial.print(distance);
  Serial.println(" cm");
  delay(5);
}