const int DOR = 3; // Door Sensing
const int Bzr = 6; // Buzzer
const int Rly = 2; // Relay.
const int MSI = A0; // Motion Sensor Input
const int LSI = A1; // Light Sensor Input
const int DSPB = 4; // Display Light Blue
const int DSPR = 5; // Display Light RED
const int DSPG = 7; // Display Light Green
const int DSPW = 8; // Display Light White
const int KLED = 9; // key Led
// Door Sataus Defining
int EDOR; // Enable Door Status input
int EDSA; // Enable Door Status Alarm
int EDAS; // Enable Door Alarm Sound
int CDS = 0; // Current Door Status
int PDS = 0; // Previous Door Status
int LMS = 0; // Lock Motion Sensor on Alarm
// Motion Sensor Input
int EMS; // Enable Motion Sensor
int MSS; // Motion Sensor Sound
int MST; // Motion Sensor Trugger
int MTD; // Motion Trugger Delay
int CMS = 0; // Current Motion Sensor Reading
int DMS; // Disable Motion Sensor over Open Door
// Light can be redifined as per user requirment
int MSL; // Motion Sensor Light
int DSL; // Door Signal Light
int DAL; // Door Alarm Light
int DSP;
int EDSP; // Enable Display Light
// Time Farm Counting
long unsigned int CRT; // Current Running Time
long unsigned int DTT = 0; // Door Trugger TIme
long unsigned int FTT = 0; // Final Trugger Time
long unsigned int DSAW = 3000; // Door Sensor Alarm Wait
// Light Sensor defining
int LSL; // Light Sensor Limit
int ELS; // Enable Light Sensor
int CLS = 0; // Current Light Sensor Status
int LST1; // Light Sensor Task 1
int LST2; // Light Sensor Task 2
void setup()
{
pinMode(DOR, INPUT);
pinMode(MSI, INPUT_PULLUP);
pinMode(DSPR, OUTPUT);
pinMode(DSPB, OUTPUT);
pinMode(DSPW, OUTPUT);
pinMode(Bzr, OUTPUT);
pinMode(DSPG, OUTPUT);
pinMode(Rly, OUTPUT);
pinMode(KLED, OUTPUT);
Serial.begin(9600);
EDOR = 1;
EDSA = 1;
EDAS = 1;
EDSP = 1; // Enable Display Light Normal
EMS = 1;
MSS = 1;
MST = 1;
MTD = 1000;
MSL = DSPG;
DSL = DSPB;
DAL = DSPR;
DSP = DSPW;
LSL = 1000;
ELS = 1;
}
void loop()
{
// Motion Sensor Conditon and configuration
if (EMS == true && DMS != true)
{ CMS = analogRead(MSI);}
if ( CMS <= 100 )
{
digitalWrite(MSL, HIGH);
delay(MTD);
digitalWrite(MSL, LOW);
}
if ( EMS == true && CMS <= 100 && MSS == true)
{
digitalWrite(Bzr, HIGH);
digitalWrite(DSP, LOW);
delay(MTD);
digitalWrite(Bzr, LOW);
}
if ( EMS == true && CMS <= 100 && MST == true)
{
digitalWrite(Rly, HIGH);
delay(MTD);
digitalWrite(Rly, LOW);
}
// Door Sensor Configuration & Conditions
CRT = millis();
if ( EDOR == true)
{ CDS = digitalRead(DOR); }
if (CDS != PDS)
{
if (CDS == HIGH)
{
DTT = millis();
digitalWrite(DSL, HIGH);
Serial.print("Current Time State is ");
Serial.println(CRT);
}
else
{
digitalWrite(DSL, LOW);
Serial.print("Final Time State is ");
Serial.println(FTT);
}
delay(50);
}
FTT = CRT - DTT;
if(EDSA == true)
{
if( CRT - DTT >= DSAW && CDS == HIGH)
{ digitalWrite(DAL, HIGH);
digitalWrite(DSP, LOW); }
else if( CDS == LOW)
{
digitalWrite(DAL, LOW);
DTT = 0;
FTT = 0;
}
if (EDAS == true && CRT - DTT >= DSAW && CDS == HIGH)
{
digitalWrite(Bzr, HIGH);
digitalWrite(DSP, LOW);
}
else
{ digitalWrite(Bzr, LOW);}
}
if (CDS == HIGH && LMS == true)
{ DMS = 1;}
else
{ DMS = 0;}
PDS = CDS;
if ( ELS == true)
{ CLS = analogRead(LSI);}
if ( CLS >= LSL)
{ digitalWrite(KLED, HIGH);}
else
{
digitalWrite(KLED, LOW);
}
if(CDS == HIGH && EDSP == true)
{ digitalWrite(DSP, LOW);}
else if (CLS >= LSL && ELS == true)
{ digitalWrite(DSPW, LOW);}
else if( EDSP == true)
{ digitalWrite(DSP, HIGH); }
}