An interface for a simple, 1-track, incremental encoder.
Dependents: AVC_20110423 incrementalencoder-pid-robot DataBus2018
IncrementalEncoder.cpp
00001 #include "IncrementalEncoder.h" 00002 00003 IncrementalEncoder::IncrementalEncoder(PinName pin): _lastTicks(0), _ticks(0), _interrupt(pin) { 00004 _interrupt.mode(PullNone); // default is pulldown but my encoder board uses a pull-up and that just don't work 00005 _interrupt.rise(callback(this, &IncrementalEncoder::_increment)); 00006 _interrupt.fall(callback(this, &IncrementalEncoder::_increment)); 00007 } 00008 00009 unsigned int IncrementalEncoder::read() { 00010 // disable interrupts? 00011 unsigned int ticks = _ticks - _lastTicks; 00012 _lastTicks = _ticks; 00013 00014 return ticks; 00015 } 00016 00017 unsigned int IncrementalEncoder::readTotal() { 00018 return _ticks; 00019 } 00020 00021 00022 void IncrementalEncoder::reset() { 00023 _ticks = _lastTicks = 0; 00024 } 00025 00026 00027 void IncrementalEncoder::_increment() { 00028 _ticks++; 00029 }
Generated on Thu Jul 14 2022 01:27:42 by 1.7.2