#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
#define tombol 7
long duration, distance; //Membuat variabel untuk durasi dan jarak
#include <Servo.h>
int status = 0;
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
pinMode(tombol, INPUT);
myservo.attach(9);
}
void loop() {
//Program agar Trig mengirim sinyal ultrasonik
int button = digitalRead(tombol);
if(digitalRead(tombol) == HIGH){
delay(200);
}
if(status == 1){
digitalWrite(led, HIGH);
Serial.println("led on");
}
else if(status == 2){
status = 0;
}
else{
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);
}