#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4

LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES);

#define echoPin 5
#define trigPin 4
#define merahPin 6
#define kuningPin 7
#define hijauPin 8
#define buzzPin 9

void setup() {
  lcd.init();
  lcd.backlight();
  
  Serial.begin(9600); // bitrate for writeline in serial mode
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(merahPin, OUTPUT);
  pinMode(kuningPin, OUTPUT);
  pinMode(hijauPin, OUTPUT);
  pinMode(buzzPin, OUTPUT);

// this part will show and write all the output processed by arduino
  lcd.setCursor(6,0);
  lcd.print("Welcome");
  lcd.setCursor(2,1);
  lcd.print("Flood Sensor");
  lcd.setCursor(7, 2);
  lcd.print("Enjoy!");

  delay(4000);
  lcd.clear();

}

//here we need to write a new function
float readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  unsigned long duration = pulseIn(echoPin, HIGH);
  return duration * 0.034 / 2;
}
//di sini hanya fugsi beep saja berdasarkan durasi
void beep(int duration) {
  tone(buzzPin, 1000);
  delay(duration);
  noTone(buzzPin);
  delay(duration);
}

void loop() {
  float distance = readDistance();
  delay(1000);

  digitalWrite(merahPin, LOW);
  digitalWrite(kuningPin, LOW);
  digitalWrite(hijauPin, LOW);

  if (distance < 80) {
    beep(2);
    digitalWrite(merahPin, HIGH);
  } else if (distance <= 200) {
    beep(150);
    digitalWrite(kuningPin, HIGH);
  } else {
    beep(1000);
    digitalWrite(hijauPin, HIGH);
  }


  lcd.setCursor(0, 0);
  lcd.print("DISTANCE: ");
  lcd.setCursor(10, 0);
  lcd.print(distance);

  Serial.print("jarak: ");
  Serial.println(distance);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
bz1:1
bz1:2
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL