An interface for a simple, 1-track, incremental encoder.

Dependents:   AVC_20110423 incrementalencoder-pid-robot DataBus2018

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers IncrementalEncoder.cpp Source File

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 }