// Mendefinisikan pin yang digunakan
#include <Servo.h> // Memasukkan library untuk mengontrol servo
Servo servo; // Membuat objek servo
int trigPin = 9; // Pin untuk mengirim sinyal ultrasonik
int echoPin = 8; // Pin untuk menerima sinyal pantulan ultrasonik
// Mendefinisikan variabel
long duration; // Variabel untuk menyimpan durasi pantulan sinyal ultrasonik
int distance; // Variabel untuk menyimpan hasil perhitungan jarak
void setup()
{
servo.attach(7); // Menentukan pin tempat servo terhubung
servo.write(0); // Mengatur posisi awal servo pada 0 derajat
delay(2000); // Menunggu selama 2 detik agar servo stabil
pinMode(trigPin, OUTPUT); // Mengatur trigPin sebagai output untuk mengirim sinyal
pinMode(echoPin, INPUT); // Mengatur echoPin sebagai input untuk menerima sinyal pantulan
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
}
void loop()
{
// Membersihkan trigPin (memastikan dalam kondisi LOW sebelum memulai pengukuran)
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Mengirimkan sinyal ultrasonik selama 10 mikrodetik
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca durasi waktu yang dibutuhkan gelombang ultrasonik untuk kembali
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak berdasarkan durasi pantulan gelombang (kecepatan suara = 0.034 cm/us)
distance = duration * 0.034 / 2;
// Menampilkan hasil jarak ke Serial Monitor
Serial.print("Jarak: ");
Serial.println(distance);
// Jika jarak kurang dari atau sama dengan 50 cm
if (distance <= 50)
{
servo.write(0); // Menggerakkan servo ke posisi 0 derajat
delay(1000); // Menunggu selama 1 detik
}
else
{
servo.write(90); // Menggerakkan servo ke posisi 90 derajat
}
}