//Low-Cost Security Alarm System
//Ultrasonic sensor
//LCD display
//LED lights
//Buzzer
#include<LiquidCrystal.h>
#define trig 8 //Ultrasonic sensor (HC-SR04): trig pin
#define echo 7 //Ultrasonic sensor (HC-SR04): echo pin
#define norisk A2 //LED pin: danger level 0 (Green : no beep)
#define ledPin1 6 //LED pin: danger level 1 (Yellow: start beeping)
#define ledPin2 9 //LED pin: danger level 2 (Yellow: beeping faster)
#define ledPin3 12 //LED pin: danger level 3 (Orange: beeping even faster)
#define ledPin4 13 //LED pin: danger level 4 (Red: beeping fastest)
#define buzz A0 //BUZZER pin
long duration;
int distance;
LiquidCrystal lcd(11, 10, 5, 4, 3, 2); //Instantiate the LCD object
void action(String line1, String line2, bool LED1, bool LED2, bool LED3, bool LED4, bool LED0, int pitch, int onTime, int offTime){
//Update LCD messages as needed
lcd.setCursor(0,0);
lcd.print(line1);
lcd.setCursor(0,11);
lcd.print(line2);
//Update LEDs as needed
digitalWrite(ledPin1, LED1);
digitalWrite(ledPin2, LED2);
digitalWrite(ledPin3, LED3);
digitalWrite(ledPin4, LED4);
digitalWrite(norisk, LED0);
//Update the beeper tone
if (pitch != 0){
tone(buzz,pitch);
delay(onTime);
noTone(buzz);
delay(offTime);
}
}
void setup()
{ //Setup LCD, LEDs, Buzzer and Serial port
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(norisk,OUTPUT);
pinMode(buzz,OUTPUT);
lcd.begin(16,2);
lcd.print("Starting System");
delay(1500);
lcd.clear();
lcd.print("System On");
delay(4000);
}
void loop()
{
//Take a distance reading
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = duration*0.034/2;
//Report distance over the serial port
Serial.print("Distance:");
Serial.println(distance);
//Take action based on measured distance
if (distance <= 50){
action("Extreme Risk", "Red LED: level 4", HIGH, HIGH, HIGH, HIGH, LOW, 1200, 100, 100);
}
else if (distance >= 51 && distance <=100){
action("High Risk ", "Red LED: level 3", HIGH, HIGH, HIGH, LOW, LOW, 1100, 100, 400);
}
else if (distance >= 101 && distance <=150){
action("Medium Risk ", "Red LED: level 2", HIGH, HIGH, LOW, LOW, LOW, 1000, 200, 600);
}
else if (distance >= 151 && distance <=250){
action("Low Risk ", "Red LED: level 1", HIGH, LOW, LOW, LOW, LOW, 900, 300, 800);
}
else{
action("No Risk ", "Green LED: Safe ", LOW, LOW, LOW, LOW, HIGH, 0, 20, 3000);
}
}