const int button = 4; // connected to trigger button
const int doorSensor = 5; // connected to door sensor switch (HIGH is closed, LOW is open)
const int doorLock = 6; // connected to door lock relay trigger input (HIGH is unlocked, LOW is locked)
int buttonState = 0; // variable for reading the pushbutton status
int doorState = 0; // variable for reading the door status (open/closed)
void setup(){
pinMode (doorSensor, INPUT); // set pin to input
pinMode (button, INPUT); // set pin to input
pinMode (doorLock, OUTPUT); // set pin to output
}
void loop(){
doorState = digitalRead(doorSensor); // read state of door sensor
buttonState = digitalRead(button); // read state of button
if (buttonState == HIGH) { // if button is pressed
unlockDoor(); // perform unlock function
}else{ // if button is not pressed
digitalWrite(doorLock, LOW); // keep door locked
}
}
void unlockDoor(){
digitalWrite(doorLock,HIGH); // unlock door
delay(2000); // wait 2 seconds
if (doorState == LOW){ // if door is open after 2 second delay
do {
doorState = digitalRead(doorSensor); // Re-check sensor
digitalWrite(doorLock,HIGH); // keep door unlocked
}while (doorState == LOW); // while door is open
// when doorState == HIGH
delay(500); // wait 1/2 second
digitalWrite(doorLock, LOW); // lock door
}else if (doorState == HIGH){ // if door is closed after 2 second delay
digitalWrite(doorLock,LOW); // lock door
}
}