Devices & Components
16x2 LCD display with I²C interface
Arduino Uno Rev3
Jumper wires (generic)
Generic button
Analog RGB led strip
Power suply 5V
Buzzer
PIR Sensor
Software & Tools
Arduino IDE
Project description
Code
Alarm Code
cpp
1#include <Wire.h> 2#include <LiquidCrystal_I2C.h> 3 4LiquidCrystal_I2C lcd(0x27, 16, 2); 5 6const int buttonPin = 8; // arm/disarm 7const int panicButton = 2; // panic trigger 8const int buzzerPin = 9; 9const int pirPin = 10; 10 11const int greenLed = 5; 12const int blueLed = 6; 13const int redLed = 11; 14 15bool alarmEnabled = false; 16bool alarmTriggered = false; 17bool panicMode = false; 18 19int lastButtonState = HIGH; 20int lastPanicState = HIGH; 21 22bool lcdState = true; 23 24void setup() { 25 pinMode(buttonPin, INPUT_PULLUP); 26 pinMode(panicButton, INPUT_PULLUP); 27 pinMode(buzzerPin, OUTPUT); 28 pinMode(pirPin, INPUT); 29 30 pinMode(greenLed, OUTPUT); 31 pinMode(blueLed, OUTPUT); 32 pinMode(redLed, OUTPUT); 33 34 lcd.init(); 35 lcd.backlight(); 36 lcd.print("Alarm Disabled"); 37 38 digitalWrite(greenLed, HIGH); 39} 40 41void loop() { 42 43 int buttonState = digitalRead(buttonPin); 44 int panicState = digitalRead(panicButton); 45 46 // ARM / DISARM BUTTON 47 if (lastButtonState == HIGH && buttonState == LOW) { 48 alarmEnabled = !alarmEnabled; 49 alarmTriggered = false; 50 panicMode = false; 51 52 lcd.clear(); 53 lcd.print(alarmEnabled ? "Alarm Enabled" : "Alarm Disabled"); 54 55 digitalWrite(redLed, LOW); 56 57 // Short beep on toggle 58 tone(buzzerPin, 1500); 59 delay(120); 60 noTone(buzzerPin); 61 62 delay(250); 63 } 64 65 // PANIC BUTTON 66 if (lastPanicState == HIGH && panicState == LOW) { 67 alarmTriggered = true; 68 panicMode = true; 69 lcd.clear(); 70 } 71 72 lastButtonState = buttonState; 73 lastPanicState = panicState; 74 75 // PIR MOTION 76 if (alarmEnabled && digitalRead(pirPin) == HIGH) { 77 alarmTriggered = true; 78 panicMode = false; 79 } 80 81 // NORMAL STATUS 82 if (!alarmTriggered) { 83 noTone(buzzerPin); 84 digitalWrite(redLed, LOW); 85 86 if (!alarmEnabled) { 87 digitalWrite(greenLed, HIGH); 88 digitalWrite(blueLed, LOW); 89 } else { 90 digitalWrite(greenLed, LOW); 91 digitalWrite(blueLed, HIGH); 92 } 93 } 94 95 // ALARM ACTIVE 96 if (alarmTriggered) { 97 // FLASH LEDs 98 digitalWrite(greenLed, HIGH); 99 digitalWrite(blueLed, HIGH); 100 digitalWrite(redLed, HIGH); 101 102 // HIGHER WAILING ALARM SOUND 103 tone(buzzerPin, 1600); // high tone 104 delay(100); 105 tone(buzzerPin, 1000); // lower tone 106 delay(100); 107 108 // LCD blinking message 109 lcd.clear(); 110 if (lcdState) { 111 lcd.print(panicMode ? "PANIC!" : "MOTION!"); 112 lcd.setCursor(0,1); 113 lcd.print("Press button"); 114 } 115 lcdState = !lcdState; 116 117 // Turn off LEDs briefly 118 digitalWrite(greenLed, LOW); 119 digitalWrite(blueLed, LOW); 120 digitalWrite(redLed, LOW); 121 noTone(buzzerPin); 122 delay(100); 123 } 124}
Downloadable files
Wiring Schematic
Note that the RGB Led represents the RGB LED Strip
Glorious Kasi.png

Code
You can directly download the code file
Alarm_Sketch.ino
Comments
Only logged in users can leave comments