#include <Servo.h>
const int trigPin = 9; // Pin trigger sensor jarak
const int echoPin = 10; // Pin echo sensor jarak
const int servoPin = 5; // Pin motor servo
Servo myServo; // Objek servo
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo.attach(servoPin);
}
void loop() {
// Baca jarak dari sensor
int distance = readDistance();
// Tampilkan jarak pada Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
// Jika ada objek di depan, ubah arah cleaner
if (distance < 20) {
changeDirection();
} else {
// Jika tidak ada objek di depan, gerakkan cleaner ke depan
moveForward();
}
// Tunggu sejenak sebelum membaca jarak lagi
delay(100);
}
int readDistance() {
// Kirim pulsa ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Baca durasi pulsa echo
long duration = pulseIn(echoPin, HIGH);
// Hitung jarak berdasarkan durasi
int distance = duration * 0.034 / 2;
return distance;
}
void moveForward() {
// Gerakkan cleaner ke depan (atur sudut servo sesuai kebutuhan)
myServo.write(90); // Posisi tengah
delay(500); // Tunggu sejenak
}
void changeDirection() {
// Ubah arah cleaner dengan memutar motor servo (atur sudut servo sesuai kebutuhan)
myServo.write(45); // Posisi kanan
delay(1000); // Tunggu sejenak
// Pilih arah baru (misalnya, putar ke kiri atau ke kanan)
// Implementasikan logika sesuai dengan kebutuhan proyek Anda
myServo.write(135); // Posisi kiri
delay(1000); // Tunggu sejenak
}