#include <Wire.h>#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C 16x2 pada alamat 0x27LiquidCrystal_I2C lcd(0x27, 16, 2);
// Konfigurasi pinconst int trigPin = 8; // Ultrasonik TRIGconst int echoPin = 9; // Ultrasonik ECHOconst int resetButton = 10; // Tombol Resetconst int buzzer = 7; // Buzzerconst int ledIndicator = 5; // LED indikator
// Variabellong duration;int distance;const int thresholdDistance = 20; // Jarak minimum (cm) untuk deteksi
bool alarmActive = false;
void setup() { // Inisialisasi pin pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(buzzer, OUTPUT); pinMode(ledIndicator, OUTPUT); pinMode(resetButton, INPUT_PULLUP); // Tombol dengan pull-up internal
// Inisialisasi LCD lcd.init(); lcd.backlight(); // Tampilan awal lcd.setCursor(0,0); lcd.print("Alarm Anti Maling"); lcd.setCursor(0,1); lcd.print("Siap Aktif..."); delay(2000); lcd.clear();}
void loop() { // Membaca tombol reset if (digitalRead(resetButton) == LOW) { alarmActive = false; digitalWrite(buzzer, LOW); digitalWrite(ledIndicator, HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print("Sistem Reset"); lcd.setCursor(0,1); lcd.print("Siap Aktif..."); delay(1000); lcd.clear(); }
// Mengirim pulsa ultrasonik digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
// Membaca durasi pulsa duration = pulseIn(echoPin, HIGH); // Menghitung jarak dalam cm distance = duration * 0.034 / 2;
// Menentukan status alarm if (distance > 0 && distance < thresholdDistance) { alarmActive = true; }
// Mengontrol buzzer dan LED indikator if (alarmActive) { digitalWrite(buzzer, HIGH); digitalWrite(ledIndicator, LOW); lcd.setCursor(0,0); lcd.print("ALERT TERDETEKSI"); lcd.setCursor(0,1); lcd.print("Jarak: "); lcd.print(distance); lcd.print(" cm "); } else { digitalWrite(buzzer, LOW); digitalWrite(ledIndicator, HIGH); lcd.setCursor(0,0); lcd.print("AMAN "); lcd.setCursor(0,1); lcd.print("Jarak: "); lcd.print(distance); lcd.print(" cm "); }
delay(200); // Refresh sensor dan tampilan setiap 200 ms}