#include <Servo.h>
Servo servoMotor; // Membuat objek servo
const int trigPin = 9; // Pin untuk Trig
const int echoPin = 10; // Pin untuk Echo
const int servoPin = 11; // Pin untuk Servo
long duration;
int distance;
bool kranStatus = false; // Status kran (true = buka, false = tutup)
void setup() {
servoMotor.attach(servoPin); // Menghubungkan servo
pinMode(trigPin, OUTPUT); // Set Trig sebagai OUTPUT
pinMode(echoPin, INPUT); // Set Echo sebagai INPUT
Serial.begin(9600); // Memulai komunikasi serial
servoMotor.write(0); // Menutup kran dispenser
}
void loop() {
// Mengirim sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menghitung durasi sinyal kembali
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Menghitung jarak dalam cm
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Jika jarak kurang dari 7 cm, buka kran
if (distance = 7) {
if (!kranStatus) {
servoMotor.write(220); // Membuka kran dispenser
kranStatus = true;
}
} else {
if (kranStatus) {
servoMotor.write(0); // Menutup kran dispenser
kranStatus = false;
}
}
delay(500); // Delay sebelum pengukuran berikutnya
}