#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definisikan pin
const int trigPin = 9;
const int echoPin = 10;
const int servoPin = 6;
// Buat objek servo dan LCD
Servo myServo;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C bisa berbeda (0x3F, 0x27, dll.)
void setup() {
// Inisialisasi pin dan LCD
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo.attach(servoPin);
lcd.begin(16, 2); // Inisialisasi LCD
lcd.print("Ultrasonik Servo");
delay(2000); // Tampilkan pesan selama 2 detik
}
void loop() {
// Mengukur jarak menggunakan sensor Ultrasonik
long duration, distance;
// Mengirimkan pulsa trig
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menghitung durasi sinyal echo
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak (dalam cm)
distance = (duration / 2) / 29.1; // Formula: jarak = (durasi / 2) * kecepatan suara
// Menampilkan jarak di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(distance);
lcd.print(" cm");
// Menggerakkan servo berdasarkan jarak
if (distance > 50) {
myServo.write(90); // Gerakkan servo ke 90 derajat jika jarak lebih dari 50 cm
} else {
myServo.write(0); // Gerakkan servo ke 0 derajat jika jarak 50 cm atau kurang
}
delay(500); // Tunggu sebentar sebelum pengukuran berikutnya
}