#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Atur alamat I2C (umumnya 0x27 atau 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger_pin = 2;
int echo_pin = 3;
int buzzer_pin = 10;
int led_biru = 8;
int led_merah = 9;
long waktu;
int jarak;
void setup() {
Serial.begin(9600);
pinMode(trigger_pin, OUTPUT);
pinMode(echo_pin, INPUT);
pinMode(buzzer_pin, OUTPUT);
pinMode(led_biru , OUTPUT);
pinMode(led_merah, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Status Pintu:");
delay(1000);
}
void loop() {
// baca sensor ultrasonik
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
waktu = pulseIn(echo_pin, HIGH);
jarak = (waktu * 0.034) / 2;
if (jarak >= 70) {
Serial.println("Pintu Terbuka");
digitalWrite(buzzer_pin, HIGH);
digitalWrite(led_biru, HIGH);
digitalWrite(led_merah, LOW);
// tampilkan ke LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Pintu Terbuka");
lcd.setCursor(0,1);
lcd.print("Jarak: ");
lcd.print(jarak);
lcd.print(" cm");
} else {
Serial.println("Pintu Tertutup");
digitalWrite(buzzer_pin, LOW);
digitalWrite(led_biru, LOW);
digitalWrite(led_merah, HIGH);
// tampilkan ke LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Pintu Tertutup");
lcd.setCursor(0,1);
lcd.print("Jarak: ");
lcd.print(jarak);
lcd.print(" cm");
}
delay(300); // jeda supaya LCD tidak berkedip terlalu cepat
}