// Deklarasi pin
const int Trig_pin = 5; // Pin untuk Trigger pada sensor ultrasonik
const int Echo_pin = 18; // Pin untuk Echo pada sensor ultrasonik
const int Red_led = 2; // Pin untuk LED merah
const int Green_led = 15; // Pin untuk LED hijau
// Konstanta dan variabel
const float Speed_of_sound = 0.034; // Kecepatan suara dalam cm/µs
const float empty_threshold = 20.0; // Ambang batas ketinggian pakan (cm)
float dist_in_cm; // Jarak dalam cm
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(115200);
// Inisialisasi pin
pinMode(Trig_pin, OUTPUT);
pinMode(Echo_pin, INPUT);
pinMode(Red_led, OUTPUT);
pinMode(Green_led, OUTPUT);
delay(1000); // Tunggu 1 detik sebelum pengukuran berikutnya
}
void loop() {
// Mengukur jarak
float distance = measureDistance();
// Menyalakan LED sesuai jarak
updateLEDs(distance);
// delay(1000); // Tunggu 1 detik sebelum pengukuran berikutnya
}
// Fungsi untuk mengukur jarak menggunakan sensor ultrasonik
float measureDistance() {
// Mengirim pulsa ultrasonik
digitalWrite(Trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
// Membaca durasi echo
long duration = pulseIn(Echo_pin, HIGH);
// Menghitung jarak dalam cm
float distance = (duration * Speed_of_sound) / 2;
Serial.print("Jarak ke permukaan pakan (cm): ");
Serial.println(distance);
return distance;
}
// Fungsi untuk mengupdate status LED berdasarkan jarak
void updateLEDs(float distance) {
if (distance >= empty_threshold) {
// Pakan hampir habis
digitalWrite(Red_led, HIGH); // Nyalakan LED merah
digitalWrite(Green_led, LOW); // Matikan LED hijau
} else {
// Pakan masih cukup
digitalWrite(Red_led, LOW); // Matikan LED merah
digitalWrite(Green_led, HIGH); // Nyalakan LED hijau
}
}