#include <Servo.h>;
Servo myservo;
const int relayPin = 13;
const int echoPin = 11;
const int trigPin = 12;
const int servoPin = 8;
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(9600); // Inisialisasi komunikasi serial untuk debugging
myservo.attach(servoPin);
}
float ultrasonik() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int durasiPantulan = pulseIn(echoPin, HIGH);
float jarak = durasiPantulan * 0.034 / 2.0; // Perbaikan pada rumus perhitungan jarak
return jarak;
}
void loop() {
float jarak = ultrasonik();
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");
// Contoh penggunaan nilai jarak untuk mengendalikan relay dan servo
if (jarak >= 15 && jarak <= 170) { // Perbaikan pada kondisi jarak
digitalWrite(relayPin, HIGH); // Aktifkan relay jika jarak di antara 160 dan 179 cm
myservo.write(90); // Putar servo ke posisi 90 derajat
} else {
digitalWrite(relayPin, LOW); // Matikan relay jika jarak di luar rentang
myservo.write(0); // Reset posisi servo ke 0 derajat
}
delay(500); // Tunggu sebentar sebelum melakukan pengukuran lagi
}