#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD12C
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Definisi pin untuk sensor ultrasonik
const int trigPin =13;
const int echoPin = 12;
// Pin untuk LED
const int redPin = 2;
const int yellowPin = 26;
const int greenPin = 32;
//Variabel untuk menyimpan jarak
long duration;
int distance;
void setup(){
// Inisialisasi pin LED
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
//Inisialisasi Serial Monitor
Serial.begin(9600);
//Set pin untuk sensor ultrasonik
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
// Inisialisasi LCD12C
lcd.init();
lcd.backlight();
}
void loop(){
//Mengirimkan sinyal ultrasonik
digitalWrite(trigPin,LOW) ;
delayMicroseconds(2) ;
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW) ;
// Mengukur waktu yang dibutuhkan sinyal untuk kembali
duration =pulseIn (echoPin, HIGH);
// Menghitung jarak (cm)
distance = duration * 0.034 / 2;
// Меnampilkan jarak pada Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println("cm");
// jarak pada LCD12C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.setCursor(0,1);
lcd.print(distance);
// Kontrol LED berdasarkan jarak
if (distance > 30) {
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
} else if (distance >= 15 && distance <= 30) {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
} else if (distance >= 0 && distance < 15) {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
}
//delay untuk pembaruan data
delay(500);
}