#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

//pin Ultrasonik
#define pintriger 4   //Pin Trigger Ultrasonic 
#define pinecho 2     //Pin Echo Ultrasonic

#define ledlow 5      //Pin LED pada level low
#define ledmiddle 6   //Pin LED pada level middle
#define ledhigh 7     //Pin LED pada level high
#define buzzer 8      //Pin Buzzer untuk peringatan bahaya

void setup() {
  Serial.begin (9600);  //Inisialisasi komunikasi serial 
  lcd.begin(16, 2);

  //Deklarasi pin
  
  pinMode(pintriger, OUTPUT);
  pinMode(pinecho, INPUT);
 
  pinMode(ledlow, OUTPUT);
  pinMode(ledmiddle, OUTPUT);
  pinMode(ledhigh, OUTPUT);
  pinMode(buzzer, OUTPUT);
 
}

void loop() {
  long durasi, jarak;  //Varibel durasi dan jarak
  digitalWrite(pintriger, LOW); 
  delayMicroseconds(2);
  digitalWrite(pintriger, HIGH);
  delayMicroseconds(10);
  digitalWrite(pintriger, LOW);
  durasi = pulseIn(pinecho, HIGH);
  jarak = (durasi/2) / 29;  //Perhitungan untuk pembacaan jarak
 
  Serial.print(jarak);
  Serial.println ("  cm");

  lcd.setCursor(0,0);
  lcd.print("  Jarak = ");
  lcd.print(jarak);       //Menampilkan jarak pada LCD 16x2
  lcd.print(" cm");
  lcd.setCursor(0,1);
  lcd.print("   KELOMPOK 6 ");

 if (jarak > 15)  //Pada jarak lebih dari 15 cm mengaktifkan LED level low
  {
      digitalWrite(ledlow, HIGH);
      digitalWrite(ledmiddle, LOW);
      digitalWrite(ledhigh,LOW);
      digitalWrite(buzzer,LOW);
      
  }
  
  else {
    
      digitalWrite(ledlow, LOW);
           
  }
  
  if (jarak <= 15)  //Pada jarak kurang dari sama dengan 15 cm mengaktifkan LED level middle
  {
      digitalWrite(ledmiddle, HIGH);
      digitalWrite(ledhigh, LOW);
      digitalWrite(buzzer,LOW);  
      
  } 
  
  
  if (jarak < 10)  //Pada jarak kurang dari 10 cm mengaktifkan LED level high
  {
    
      digitalWrite(ledhigh, HIGH);
      digitalWrite(buzzer,LOW);  
      
  } 
  
  
  if (jarak < 5) //Pada jarak kurang dari 5 cm mengaktifkan buzzer dan relay
  { 
    digitalWrite(buzzer,HIGH);
    digitalWrite(ledhigh, LOW);
    digitalWrite(ledmiddle, LOW);
   
  }
 
  delay(500);

}
$abcdeabcde151015202530354045505560fghijfghij