Commit e826d15f authored by user2684's avatar user2684
Browse files

For SENSOR_MOTION, pull up is wrongly set to HIGH in registerSensor() #27

parent 32098eac
...@@ -704,14 +704,18 @@ void SensorSwitch::setMode(int value) { ...@@ -704,14 +704,18 @@ void SensorSwitch::setMode(int value) {
int SensorSwitch::getMode() { int SensorSwitch::getMode() {
return _mode; return _mode;
} }
// setter/getter
void SensorSwitch::setDebounce(int value) { void SensorSwitch::setDebounce(int value) {
_debounce = value; _debounce = value;
} }
// setter/getter
void SensorSwitch::setTriggerTime(int value) { void SensorSwitch::setTriggerTime(int value) {
_trigger_time = value; _trigger_time = value;
} }
void SensorSwitch::setInitial(int value) {
_initial = value;
}
int SensorSwitch::getInitial() {
return _initial;
}
// what do to during setup // what do to during setup
void SensorSwitch::onBefore() { void SensorSwitch::onBefore() {
...@@ -763,6 +767,8 @@ SensorMotion::SensorMotion(int child_id, int pin): SensorSwitch(child_id,pin) { ...@@ -763,6 +767,8 @@ SensorMotion::SensorMotion(int child_id, int pin): SensorSwitch(child_id,pin) {
setPresentation(S_MOTION); setPresentation(S_MOTION);
// capture only when it triggers // capture only when it triggers
setMode(RISING); setMode(RISING);
// set initial value to LOW
setInitial(LOW);
} }
/* /*
...@@ -1013,7 +1019,8 @@ int NodeManager::registerSensor(int sensor_type, int pin, int child_id) { ...@@ -1013,7 +1019,8 @@ int NodeManager::registerSensor(int sensor_type, int pin, int child_id) {
else if (sensor_type == SENSOR_DOOR) index = registerSensor(new SensorDoor(child_id, pin)); else if (sensor_type == SENSOR_DOOR) index = registerSensor(new SensorDoor(child_id, pin));
else if (sensor_type == SENSOR_MOTION) index = registerSensor(new SensorMotion(child_id, pin)); else if (sensor_type == SENSOR_MOTION) index = registerSensor(new SensorMotion(child_id, pin));
// set an interrupt on the pin and activate internal pull up // set an interrupt on the pin and activate internal pull up
setInterrupt(pin,((SensorSwitch*)get(index))->getMode(),HIGH); SensorSwitch* sensor = (SensorSwitch*)get(index);
setInterrupt(pin,sensor->getMode(),sensor->getInitial());
return index; return index;
} }
#endif #endif
......
...@@ -496,6 +496,9 @@ class SensorSwitch: public Sensor { ...@@ -496,6 +496,9 @@ class SensorSwitch: public Sensor {
void setDebounce(int value); void setDebounce(int value);
// time to wait in milliseconds after a change is detected to allow the signal to be restored to its normal value (default: 0) // time to wait in milliseconds after a change is detected to allow the signal to be restored to its normal value (default: 0)
void setTriggerTime(int value); void setTriggerTime(int value);
// Set initial value on the interrupt pin (default: HIGH)
void setInitial(int value);
int getInitial();
// define what to do at each stage of the sketch // define what to do at each stage of the sketch
void onBefore(); void onBefore();
void onLoop(); void onLoop();
...@@ -504,6 +507,7 @@ class SensorSwitch: public Sensor { ...@@ -504,6 +507,7 @@ class SensorSwitch: public Sensor {
int _debounce = 0; int _debounce = 0;
int _trigger_time = 0; int _trigger_time = 0;
int _mode = CHANGE; int _mode = CHANGE;
int _initial = HIGH;
}; };
/* /*
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
*/ */
#define SKETCH_NAME "NodeManagerTemplate" #define SKETCH_NAME "NodeManagerTemplate"
#define SKETCH_VERSION "1.2" #define SKETCH_VERSION "1.3-dev"
/********************************** /**********************************
* MySensors configuration * MySensors configuration
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment