Arduino Alarm System Code Guide
Arduino Alarm System Code Guide
Team Promoter: };
Project Title: " Dual-Purpose Microcontroller Based School Oriented Alarm // Keypad settings
Arduino Pin Assignment: OnewireKeypad <Print, 16 > KP2(Serial, KEYS, 4, 4, A7, 4700, 1000, 10000);
Digital Pins: // Set the LCD address to 0x3F for a 20 chars and 4 line display
:PIN 1 = tx // Initializing the DS3231 using the hardware interface SDA - A4 : SCL - A5
:PIN 4 = Smoke LED Indicator (SMOKE) Time t; // variable used in addition to DS3231 call function
:PIN 5 = Push Button LED Indicator (PB) int H; // variable use to track the state of time (AM or PM)
:PIN 7 = Alarm Bell Negative Terminal (ALARMn) (Relay 2) // Digital Pin Assignment
:PIN 8 = Annunciator (SIGN) (Relay 3) int MPB = 2 ; // Module Pushbutton Digital Pin Assignment
:PIN 9 = Reserved Pin (Relay 4) int ELED = 3 ; // Emergency Led Digital Pin Assignment
:PIN 10 = Reserved Pin (Relay 5) int SMOKE = 4 ; // Smoke Sensor Led Indicator Digital Pin Assignment
:PIN 11 = Reserved Pin (Relay 6) int PB = 5 ; // Pushbutton Led Indicator Digital Pin Assignment
:PIN 12 = Smoke Sensor Terminating Switch (Relay 7) int ALARMp = 6 ; // Alarm Bell Digital Pin Output Asssignment (Positive)
:PIN 13 = Reserved Pin (Relay 8) int ALARMn = 7 ; // Alarm Bell Digital Pin Output Asssignment (Ground)
:ANALOG 0 = Smoke Sensor int SSS = 12 ; // Smoke Sensor Switch Pin Output Assignment
:ANALOG 3 = Reserved Analog Pin int Sensor = A0 ; // Analog Pin Assignment of Smoke Sensor
:ANALOG 4 = SDA int PLed = A1 ; // Analog Pin Assignment of Smoke Sensor Pilot Led
:ANALOG 5 = SCL int ETPB = A2 ; // Analog Pin Assignment of Emergency Terminating Push Button
:ANALOG 6 = Emergency Push Buttons int EPB = A6 ; // Analog Pin Assignment of Emergency Push Button
*/
// EEPROM Storage Address pinMode (ALARMn,OUTPUT); // declare that the pin is an OUTPUT
int aBD = 0; // address of Bell Duration Value pinMode (SIGN,OUTPUT); // declare that the pin is an INPUT
int aBI = 1; // address of Bell Interval Value pinMode (SSS,OUTPUT); // declare that the pin is an OUTPUT
int aMWF = 4; // address of MWF Interval Value // Relay Initialization High for OFF Low For ON
int aTTHS = 5; // address of TTHS Interval Value digitalWrite(ALARMp,HIGH); // Positive Supply of Bell
char NORMAL; // NORMAL OR DEFAULT INSTRUCTION DESTINATION digitalWrite(SSS,HIGH); // Smoke Sensor Relay Switch Terminator
char LOOP; // LOOP [Link](); // Turn on the blacklight and print a message.
char DRING; // DOUBLE RINGING ACTION [Link](); // Initialize the rtc object
// The following lines can be uncommented to set the date and time
char OHTF; // ONE HOUR TIME FORMAT
//[Link](SATURDAY); // Set Day-of-Week
char OHHTF; // ONE AND HALF TIME FORMAT
//[Link](10, 58, 10); // Set the time (Hour-Minute-Sec)
char SCHED; // SCHEDULE SETTINGS
//[Link](28, 12, 2019); // Set the date (Date-Month-Year)
char LSCHED; // SCHED LOOP RETURN
// The following lines can be uncommented to set the Default Bell and Alarm Settings
// Emergency Settings
//[Link](aBD,3); // Bell Duration (During Normal Operation)
char Aloop; // For LOOP SETTINGS
//[Link](aBI,2); // Bell Interval (During Normal Operation)
char Enote; // Destination After Emergency Alert
//[Link](aAD,3); // Alarm Duration (During Emergency Operation)
char Tloop; // Time Setting Conditional Loop Destination //[Link](aTTHS,2); // TTHS Time Format / Interval 1= One Hour Format 2=
One and One Half Hour Format
void setup()
// Introduction Only:
{
[Link](0,0);
// Arduino Pin Mode declaration
[Link](" DUAL-PURPOSE");
pinMode (MPB,INPUT); // declare that the pin is an INPUT
[Link](0,1);
pinMode (ELED,OUTPUT); // declare that the pin is an OUTPUT
[Link](" ALARM SYSTEM");
pinMode (SMOKE,OUTPUT); // declare that the pin is an OUTPUT
delay(5000);
pinMode (PB,OUTPUT); // declare that the pin is an INPUT
[Link]();
pinMode (ALARMp,OUTPUT); // declare that the pin is an OUTPUT
H=[Link]-12;} // If True Hour to Display is equal to RTC Hour minus 12
// Declaring Characters as long intiger used to temporarily store long numeric values
// Dispaly Time
long Day, Month, Year, Min, Hour, Sec, eAD, eAI, eBD, eBI, eMWF, eTTHS, DOW ;
[Link](0,0);
[Link]("-------H--M--S------");
//
======================================================================== [Link](0,1);
======================:
[Link]("Time: ");
NORMAL: // Default Program Loop Destination that always display time and date :
[Link](H);
// Check the Status of Time and Emergency Devices (Smoke Sensor & Emergency
Switches): [Link](":");
[Link]([Link], DEC);
[Link](":");
// CONDITION FOR USER INTERFACE
[Link]([Link], DEC);
if([Link]()=='*'){[Link](); goto SETTINGS;} // If True: Direct the Program to
Settings
[Link](" ");
if([Link]()=='B'){[Link](); goto SYSTEM;} // If True: Direct the Program to
System
// Display Date
[Link](0,2);
// CONDITION FOR EMERGENCY SETTINGS
[Link]("Date: ");
if(digitalRead(MPB)==HIGH){[Link](); goto EMERGENCY;} // Check Module Push
Button State [Link]([Link]());
}
// Condition Program for AM and PM
//
========================================================================
======================: digitalWrite(ALARMp, LOW);
OHTF: // Checks The Alarm Time With OHTF (One Hour Time Format) digitalWrite(ALARMn, LOW);
delay([Link](aBD)*1000);
// //
======================================================================== ========================================================================
======================: ======================:
OHHTF:// Checks The Alarm Time With OHHTF (One Hour and Half Time Format) EMERGENCY:
t = [Link]();
if (([Link]==7||[Link]==10||[Link]==13||[Link]==16|| if(analogRead(Sensor)>500){
[Link]==19)&&([Link]==25&&[Link]==0)){goto SRING;}
digitalWrite(SMOKE,HIGH);
if (([Link]==7||[Link]==10||[Link]==13||[Link]==16||
[Link]==19)&&([Link]==30&&[Link]==0)){goto DRING;} } // For Smoke Sensor
if (([Link]==8||[Link]==11||[Link]==13||[Link]==14||
[Link]==17)&&([Link]==55&&[Link]==0)){goto SRING;}
if(analogRead(EPB)<500){
if (([Link]==9||[Link]==12||[Link]==15||[Link]==18)&&([Link]==0&&[Link]==0)){goto
DRING;} digitalWrite(PB,HIGH);
//
======================================================================== [Link]();
======================:
[Link](0,0);
DRING: // Execute the Code to Ring the Bell Twice
[Link](" WARNING WARNING ");
[Link](0,1);
digitalWrite(ALARMp, LOW);
[Link](" EMERGENCY ALERT ");
digitalWrite(ALARMn, LOW);
[Link](0,2);
delay([Link](aBD)*1000);
[Link]("*------------------*");
digitalWrite(ALARMn, HIGH);
[Link](0,3);
delay([Link](aBI)*1000);
[Link]("LONG PRESS (E)- EXIT");
digitalWrite(ALARMn, LOW);
digitalWrite(SIGN,LOW);
delay(3000);
delay(100);
digitalWrite(ALARMp, HIGH);
digitalWrite(ALARMn, HIGH);
[Link]();
while(analogRead(ETPB)<500){
goto NORMAL;
digitalWrite(ELED,HIGH);
digitalWrite(ALARMp,LOW);
//
======================================================================== digitalWrite(ALARMn,LOW);
======================:
delay([Link](aAD)*1000);
digitalWrite(ELED,LOW); [Link](0,0);
delay([Link](aAI)*1000);
} [Link](0,1);
[Link](); [Link]([Link](aBD));
[Link]("AD: ");
// [Link]([Link](aAD));
========================================================================
======================: [Link](14,1);
Enote: // Display Emergency Note Displaying Triggered Input Devices Leds [Link]("MWF: ");
[Link]([Link](aMWF));
digitalWrite(ALARMp,HIGH);
digitalWrite(ALARMn,HIGH); [Link](0,2);
digitalWrite(SSS,LOW); [Link]([Link](aBI));
digitalWrite(SIGN,LOW); [Link](7,2);
[Link]("AI: ");
[Link](); [Link]([Link](aAI));
[Link](0,0); [Link](14,2);
[Link](0,1); [Link]([Link](aTTHS));
[Link]("WERE TRIGGERED");
[Link](0,2); [Link](0,3);
[Link]("--------------------"); [Link]("EXT(C)");
[Link](0,3); [Link](14,3);
[Link]([Link]);
while([Link]()!='C'){}
digitalWrite(SMOKE,LOW); while([Link]()==NO_KEY){}
digitalWrite(SIGN,HIGH);
digitalWrite(SSS,HIGH);
goto SYSTEM;
[Link]();
goto NORMAL;
//
========================================================================
======================:
//
SETTINGS: // Display Settings Window On What To Edit
========================================================================
======================:
[Link](0,2); [Link](0,1);
[Link](0,3); [Link](11,1);
[Link](11,1);
[Link]("ALARM = 4");
[Link]();
[Link](11,2);
[Link](0,3);
[Link]("[Link]. = 5");
[Link]("Range (2019+): (B)->");
[Link](11,3);
[Link](0,1);
[Link]("EXT(C)");
[Link]("SET YEAR: ");
[Link](10,1);
if([Link]()=='1'){[Link]();goto DMY;}
Year = GetNumber();
if([Link]()=='2'){[Link]();goto HMS;}
if([Link]()=='3'){[Link]();goto BSET;}
[Link]();
if([Link]()=='4'){[Link]();goto ASET;}
[Link](0,3);
if([Link]()=='5'){[Link]();goto SCHED;}
[Link]("Range (1-7) : (B)->");
if([Link]()=='C'){[Link]();goto NORMAL;}
[Link](0,1);
while([Link]()==NO_KEY){}
[Link]("SET DOW: ");
goto SETTINGS;
[Link](9,1);
DOW = GetNumber();
//
========================================================================
======================:
DMY: // Program Instruction To Modify The Date, Month, Year, and DOW (Day Of the Dloop:
Week)
[Link]();
[Link](0,0);
[Link](0,1);
[Link]("Is Date Correct ?:");
[Link](" DAY MONTH YEAR");
[Link](0,1);
delay(1000);
[Link](Day);
t = [Link]();
[Link](":");
[Link](Month);
[Link]();
[Link](":");
[Link](0,3);
[Link](Year);
[Link]("Range (1-31) : (B)->");
[Link](0,2);
[Link](0,1);
[Link]("DOW: ");
[Link]("SET DAY: ");
[Link](DOW);
[Link](9,1);
[Link](0,3);
Day = GetNumber();
[Link]("YES=1 NO=2 EXIT='C'");
while([Link]()==NO_KEY){}
if([Link]()=='1'){
[Link]();
[Link](Day, Month, Year); Tloop:
[Link](DOW); [Link]();
if([Link]()=='2'){[Link](); goto DMY;} // Repeat The DMY Instruction [Link]("Is TIME Correct ?");
[Link](":");
//
======================================================================== [Link](Min);
======================:
[Link](":");
HMS: // Program Instruction To Modify The Hour, Minute,and Second
[Link](Sec);
[Link](0,3);
[Link](0,0);
[Link]("YES=1 NO=2 EXIT='C'");
[Link](" HOUR-MIN-SEC");
while([Link]()==NO_KEY){}
delay(1000);
t = [Link]();
if([Link]()=='1'){
delay(1000);
t = [Link]();
[Link](10,1);
Hour = GetNumber(); //
========================================================================
======================:
[Link](0,1);
[Link]();
[Link]("ALARM DURATION: ");
[Link](0,3);
[Link](16,1);
[Link]("Range (0-59) : (B)->");
eAD = GetNumber();
[Link](0,1);
[Link](16,1);
eAI = GetNumber();
[Link]();
[Link](0,3);
[Link](); [Link](0,1);
[Link]("AD=");
[Link](eAD);
LOOP:
[Link](11,1);
[Link]();
[Link]("AI=");
[Link](0,0);
[Link](eAI);
[Link]("INPUT CORRECT ?");
[Link](0,3);
[Link](0,1);
[Link]("YES=1 NO=2 EXIT='C'");
[Link]("BD=");
while([Link]()==NO_KEY){}
[Link](eBD);
[Link](11,1);
if([Link]()=='1'){
[Link]("BI=");
[Link](aAD,eAD);
[Link](eBI);
[Link](aAI,eAI);
[Link](0,3);
delay(500); goto SETTINGS; }
[Link]("YES=1 NO=2 EXIT='C'");
if([Link]()=='2'){[Link](); goto ASET;} // Repeat the Alarm Settings
while([Link]()==NO_KEY){}
Program
[Link](aBI,eBI);
//
======================================================================== delay(500); goto SETTINGS; }
======================:
if([Link]()=='2'){[Link](); goto BSET;} // Repeat the Bell Settings Program
BSET: // TIME SETTINGS:
if([Link]()=='C'){[Link](); goto NORMAL;} // Cancel The Program. Returns to
Normal
[Link]("BELL SETTINGS");
delay(1000); //
========================================================================
======================:
[Link](0,3);
[Link](); [Link](aTTHS,eTTHS);
[Link](0,1);
//
[Link]("SET MWF FORMAT: "); ========================================================================
======================:
[Link](16,1);
// Call Function Used For Long Number Keypad Reading
eMWF = GetNumber();
int GetNumber()
{
[Link]();
long num = 0;
[Link](15,0);
char key = [Link]();
[Link]("(B)->");
while(key != 'B')
[Link](0,2);
{
[Link]("1=(1 Hour F.)");
switch (key)
[Link](0,3);
{
[Link]("2=(1.5 Hour F.)");
case NO_KEY:
[Link](0,1);
break;
[Link]("SET TThS FORMAT: ");
[Link](16,1);
case '0': case '1': case '2': case '3': case '4':
eTTHS = GetNumber();
case '5': case '6': case '7': case '8': case '9':
LSCHED:
delay(200);
[Link]();
[Link](key);
[Link](0,0);
[Link](eMWF);
[Link](eTTHS); [Link]();
[Link](0,3); [Link](0,1);
[Link](0,2);
}
if([Link]()=='1'){
key = [Link]();
delay(200);
return num;