#define lampu 8 //Membuat variabel LED ke-pin 13
#define echo 9 //Membuat variabel Echo ke-pin 12
#define trig 8 //Membuat variabel Trig ke-pin 11
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(trig, OUTPUT); //Set varibel trigPin sebagai output
pinMode(echo, INPUT); //Set variabel echoPin sebagai input
pinMode(lampu, OUTPUT); //Set variabel led sebagai output
myservo.attach(11);
}
void loop() {
//Program agar Trig mengirim sinyal ultrasonik
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(5);
digitalWrite(trig, LOW);
delayMicroseconds(5);
duration = pulseIn(echo, HIGH); //Echo menerima sinyal ultrasonik
distance = (duration/2)/29.1; //Rumus mengubah durasi menjadi jarak (cm)
int jarak = read_srf(trig, echo);
//Program jika jarak kurang dari 10 CM maka LED akan menyala
if(distance<=150){
digitalWrite(lampu, HIGH);
myservo.write(90);
}else{
digitalWrite(lampu, LOW);
myservo.write(0);
}
//Meanmpilkan jarak di serial monitor dengan jeda 0.05 detik
Serial.print(distance);
Serial.println(" cm");
delay(10000);
}