An interface for a simple, 1-track, incremental encoder.
Dependents: AVC_20110423 incrementalencoder-pid-robot DataBus2018
Diff: IncrementalEncoder.cpp
- Revision:
- 0:dea4a931b267
- Child:
- 1:5011d894d5a7
diff -r 000000000000 -r dea4a931b267 IncrementalEncoder.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IncrementalEncoder.cpp Wed Apr 27 17:58:52 2011 +0000 @@ -0,0 +1,29 @@ +#include "IncrementalEncoder.h" + +IncrementalEncoder::IncrementalEncoder(PinName pin): _lastTicks(0), _ticks(0), _interrupt(pin) { + _interrupt.mode(PullNone); // default is pulldown but my encoder board uses a pull-up and that just don't work + _interrupt.rise(this, &IncrementalEncoder::_increment); + _interrupt.fall(this, &IncrementalEncoder::_increment); +} + +unsigned int IncrementalEncoder::read() { +// disable interrupts? + unsigned int ticks = _ticks - _lastTicks; + _lastTicks = _ticks; + + return ticks; +} + +unsigned int IncrementalEncoder::readTotal() { + return _ticks; +} + + +void IncrementalEncoder::reset() { + _ticks = _lastTicks = 0; +} + + +void IncrementalEncoder::_increment() { + _ticks++; +} \ No newline at end of file