Smart Home Security Alarm — Arduino Mega simulation

Sistem keamanan rumah dan alarm multi-bahaya menggunakan Arduino Mega dengan sensor PIR, DHT11, Keypad, LCD, dan Buzzer.

An interactive Arduino Mega circuit simulation you can run free in your browser on Velxio, by s160425118.

Components

Sketch code

#include "DHT.h"
#include <LiquidCrystal.h>

// Definisi pin sesuai wiring Anda
#define DHTPIN 8
#define BUZZER_PIN 13
#define LED_MERAH 31 
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Variabel status untuk mencegah buzzer berdering saat suhu di rentang hibrida (47-49 C)
bool statusBahaya = false;

void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.begin(16, 2);
  
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED_MERAH, OUTPUT);

  // Paksa kondisi awal mati total
  noTone(BUZZER_PIN);
  digitalWrite(BUZZER_PIN, LOW);
  digitalWrite(LED_MERAH, LOW);
}

void loop() {
  float suhu = dht.readTemperature();

  // Jika pembacaan sensor gagal, lewati siklus loop
  if (isnan(suhu)) {
    Serial.println("Gagal membaca sensor DHT!");
    return;
  }

  // Tampilkan Suhu di Baris Pertama LCD
  lcd.setCursor(0, 0);
  lcd.print("Suhu: ");
  lcd.print(suhu, 1);
  lcd.print((char)223); // Simbol derajat °
  lcd.print("C   ");

  // ==========================================
  // LOGIKA HISTERESIS (Sesuai Struktur)
  // ==========================================
  if (suhu >= 50) {
    statusBahaya = true;   // Aktifkan mode bahaya saat suhu >= 50
  } 
  else if (suhu < 47) {
    statusBahaya = false;  // Baru nonaktifkan mode bahaya jika suhu turun di bawah 47
  }

  // ==========================================
  // EKSEKUSI AOUTPUT (If-Else Bersih)
  // ==========================================
  if (statusBahaya) {
    tone(BUZZER_PIN, 1000);        // Buzzer bunyi
    digitalWrite(LED_MERAH, HIGH);  // LED Merah nyala
    
    lcd.setCursor(0, 1);
    lcd.print("Status: BAHAYA! ");
  } 
  else {
    noTone(BUZZER_PIN);             // Matikan frekuensi tone
    digitalWrite(BUZZER_PIN, LOW);  // Paksa pin 13 ke GND (0V) agar tidak ada arus sisa
    digitalWrite(LED_MERAH, LOW);   // LED Merah mati
    
    lcd.setCursor(0, 1);
    lcd.print("Status: AMAN    ");
  }

  delay(500); 
}

More projects by s160425118