#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);
}