#include <Servo.h> // Memuat library Servo untuk mengontrol motor servo
Servo servoKeluar; // Membuat objek servo dengan nama servoKeluar
// Deklarasi pin untuk sensor ultrasonik
const int TRIGPINKeluar = 9; // Pin untuk sinyal trig sensor ultrasonik
const int ECHOPINKeluar = 10; // Pin untuk sinyal echo sensor ultrasonik
int jarak; // Variabel untuk menyimpan hasil pengukuran jarak
void setup() {
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600 untuk debugging
pinMode(ECHOPINKeluar, INPUT); // Mengatur pin echo sebagai input
pinMode(TRIGPINKeluar, OUTPUT); // Mengatur pin trig sebagai output
servoKeluar.attach(5); // Menghubungkan servo ke pin digital 5
servoKeluar.write(0); // Mengatur posisi awal servo ke 0° (tertutup)
}
void loop() {
// Mengirimkan sinyal trig ke sensor ultrasonik
digitalWrite(TRIGPINKeluar, LOW); // Pastikan pin trig dalam kondisi LOW
delayMicroseconds(2); // Tunggu selama 2 mikrodetik
digitalWrite(TRIGPINKeluar, HIGH); // Aktifkan pin trig
delayMicroseconds(10); // Tunggu selama 10 mikrodetik untuk mengirim pulsa
digitalWrite(TRIGPINKeluar, LOW); // Nonaktifkan pin trig
// Membaca durasi sinyal echo dan menghitung jarak
jarak = (pulseIn(ECHOPINKeluar, HIGH) / 2) * 0.0343; // Menghitung jarak dalam cm
delay(200); // Tunggu sebentar sebelum melanjutkan
// Menampilkan jarak ke Serial Monitor
Serial.print("Jarak = ");
Serial.print(jarak);
Serial.print(" cm");
Serial.println();
delay(200); // Tunggu sebentar sebelum memproses logika servo
// Logika untuk mengontrol servo berdasarkan jarak
if (jarak < 50) {
// Jika jarak kurang dari 50 cm, buka servo (posisi 90°)
servoKeluar.write(90);
} else {
// Jika jarak lebih dari atau sama dengan 50 cm, tutup servo (posisi 0°)
servoKeluar.write(0);
}
delay(200); // Tunggu sebelum melakukan iterasi berikutnya
}