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

Dependents:   AVC_20110423 incrementalencoder-pid-robot DataBus2018

Revision:
0:dea4a931b267
Child:
1:5011d894d5a7
--- /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