Driver for a binary on/off presence device
Diff: Presence.cpp
- Revision:
- 0:21320a151be0
- Child:
- 1:9d2b641a9280
- Child:
- 2:4ab67ace383b
- Child:
- 5:1d5ca464ac89
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Presence.cpp Wed Dec 10 14:06:35 2014 +0000 @@ -0,0 +1,54 @@ +/* + Presence.cpp - presence sensor library + Developed by Andrea Corrado & Eric Gowland + + Connect to a hardware device that is boolean present/not present. Such as PIR or Rangefinder with appropriate signalling. + Also drives LED as presence indicator. +*/ + + +#include "mbed.h" +#include "Presence.h" + + + +Presence::Presence(PinName pin, bool true_on_rise, int debounce_time_ms):_myint(pin), _led1(LED1) +{ + debounce_ms = debounce_time_ms; + _true_on_rise = true_on_rise; +// if(true_on_rise) { +// _myint.rise(this, &Presence::presence_interrupt_off); +// _myint.fall(this, &Presence::presence_interrupt_on); +// } else { +// _myint.rise(this, &Presence::presence_interrupt_on); +// _myint.fall(this, &Presence::presence_interrupt_off); +// } + _detection=false; +// debounce_timer.start(); + _led1=1; + +} + +void Presence::presence_interrupt_off(){ + if(debounce_timer.read_ms() > debounce_ms) { + _detection=false; + _led1=1; + } +} + +void Presence::presence_interrupt_on() //Detection of motion. +{ + //Always trigger detection.. + _detection=true; + _led1=0; + debounce_timer.reset(); // Reset counter to 0... +} + +bool Presence::isPresent(){ +// if (debounce_timer.read_ms() > debounce_ms) { + //Poll the pin and update value... + _detection = (_true_on_rise && _myint == 1) || (!_true_on_rise && _myint == 0); + if(_detection) _led1 = 0; else _led1 = 1; +// } + return _detection; +} \ No newline at end of file