arduino-sketches/esp32/doorSensor.h

49 lines
1.2 KiB
C++

#include "alarm.h"
AlarmStatus* status;
class DoorSensor {
private:
int DOOR_SENSOR_PIN = 23;
AlarmStatus* status;
int lastDoorState=1;
public:
static const int DEFAULT_DOOR_SENSOR_PIN=23;
DoorSensor(int doorSensorPin, AlarmStatus* statusObj){
Serial.println("const.");
DOOR_SENSOR_PIN = doorSensorPin;
status = statusObj;
}
void Init(){
pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
}
bool IsDoorOpen(){
return status->doorStatus == DOOR_OPEN;
}
bool IsDoorClosed(){
return status->doorStatus == DOOR_CLOSED;
}
void HandleDoor(){
//status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
lastDoorState = status->doorStatus; // save the last state
status->doorStatus = digitalRead(DOOR_SENSOR_PIN); // read new state
// state change: LOW -> HIGH
if (lastDoorState == DOOR_CLOSED && status->doorStatus == DOOR_OPEN) {
//handleOpen();
status->doorChanged=true;
}
else
if (lastDoorState == DOOR_OPEN && status->doorStatus == DOOR_CLOSED) { // state change: HIGH -> LOW
// handleClose();
status->doorChanged=true;
}
}
};