|
@@ -2,7 +2,7 @@
|
|
|
|
|
|
#define CALIBRATION_DURATION 30 //seconds
|
|
|
|
|
|
-class PIR{
|
|
|
+class Motion{
|
|
|
unsigned int _pin;
|
|
|
unsigned long _triggerDuration, _motionDetectedTime;
|
|
|
bool _currentMotionState;
|
|
@@ -10,21 +10,22 @@ class PIR{
|
|
|
void (*_stopCallback)(void);
|
|
|
|
|
|
public:
|
|
|
- PIR(unsigned int pin, unsigned long triggerDuration, void (*startCallback)(void), void (*stopCallback)(void)){
|
|
|
+ Motion(unsigned int pin, unsigned long triggerDuration, void (*startCallback)(void), void (*stopCallback)(void)){
|
|
|
_pin = pin;
|
|
|
_triggerDuration = triggerDuration;
|
|
|
_startCallback = startCallback;
|
|
|
_stopCallback = stopCallback;
|
|
|
}
|
|
|
|
|
|
- void setup() {
|
|
|
+ void setup(bool wait=false) {
|
|
|
Serial.print("Starting PIR sensor");
|
|
|
pinMode(_pin, INPUT);
|
|
|
digitalWrite(_pin, LOW);
|
|
|
- for (int i=0; i<CALIBRATION_DURATION; i++){
|
|
|
- Serial.print(".");
|
|
|
- delay(1000); // 30 second "calibration" time
|
|
|
- }
|
|
|
+ if (wait)
|
|
|
+ for (int i=0; i<CALIBRATION_DURATION; i++){
|
|
|
+ Serial.print(".");
|
|
|
+ delay(1000); // 30 second "calibration" time
|
|
|
+ }
|
|
|
Serial.println("done");
|
|
|
}
|
|
|
|
|
@@ -37,6 +38,7 @@ public:
|
|
|
_startCallback();
|
|
|
_currentMotionState = motionDetected;
|
|
|
}
|
|
|
+
|
|
|
|
|
|
if (_currentMotionState && millis() >= _motionDetectedTime + _triggerDuration){
|
|
|
_stopCallback();
|