#include <LiquidCrystal_I2C.h>
#define ECHO_PIN 6
#define TRIG_PIN 5
#define merah 10
#define kuning 9
#define hijau 8
#define buzzer 4
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.init();
lcd.backlight();
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
float volume = 20 * (distance/200);
Serial.print("Jarak: ");
Serial.println(distance);
Serial.print("Volume: ");
Serial.println(volume);
lcd.setCursor(1, 0);
lcd.print("Jarak:");
lcd.print(distance);
lcd.print("");
lcd.print("cm");
lcd.setCursor(1, 1);
lcd.print("Volume:");
lcd.print(volume);
lcd.print("");
lcd.print("cm3");
delay(100);
if (volume > 20){
digitalWrite(merah, HIGH);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
tone(buzzer, 500, 10);
}
if (volume > 15 && volume <= 20){
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau,LOW);
}
if (volume > 0 && volume <= 15){
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
}
delay(100);
}