Kero Sunutte
/
Pswitch
This is a very simple way to count DigitalIn rising by using Ticker Interrupts.
Pswitch.cpp
- Committer:
- MBE13170
- Date:
- 2010-12-23
- Revision:
- 0:d8173cfb7a78
File content as of revision 0:d8173cfb7a78:
#include "Pswitch.h" #include "mbed.h" /* * Constructor */ Pswitch::Pswitch(PinName in) : _in(in) { // reset all the flags and counters _samples = 0; _output = 0; _output_last = 0; _rising_flag = 0; // Attach ticker _ticker.attach(this, &Pswitch::_sample, 0.005); } void Pswitch::_sample() { _output_last = _output; _output = _in; if (!_output && _output_last) { _rising_flag++; } } // return number of rising edges int Pswitch::count(void) { int return_value = _rising_flag; _rising_flag = 0; return(return_value); } // return the debounced status int Pswitch::read(void) { return(_in); } // shorthand for read() Pswitch::operator int() { return read(); }