#include <Servo.h>
// Deklarasi objek servo
Servo myservo;
// Pin definisi sensor jarak
const int trigPin = 7;
const int echoPin = 6;
void setup() {
// Inisialisasi pin servo
myservo.attach(9);
// Inisialisasi pin sensor jarak
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Mengambil nilai jarak dari sensor HC-SR04
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca lama durasi sinyal kembali
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak (dalam cm)
distance = duration * 0.034 / 2;
// Menampilkan jarak pada serial monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Logika kontrol servo
if (distance > 10) {
// Menghitung penambahan derajat berdasarkan jarak
int angle = (distance - 10) / 2 * 10;
// Membatasi sudut maksimal pada 180 derajat
if (angle > 180) {
angle = 180;
}
// Menggerakkan servo sesuai sudut
myservo.write(angle);
// Menampilkan sudut pada serial monitor
Serial.print("Sudut Servo: ");
Serial.println(angle);
} else {
// Jika jarak <= 10 cm, servo tetap pada posisi awal (0 derajat)
myservo.write(0);
Serial.println("Servo di posisi 0 derajat");
}
// Penundaan sementara sebelum pembacaan berikutnya
delay(500);
}