An interface for a simple, 1-track, incremental encoder.
Dependents: AVC_20110423 incrementalencoder-pid-robot DataBus2018
IncrementalEncoder.h@0:dea4a931b267, 2011-04-27 (annotated)
- Committer:
- shimniok
- Date:
- Wed Apr 27 17:58:52 2011 +0000
- Revision:
- 0:dea4a931b267
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shimniok | 0:dea4a931b267 | 1 | #include "mbed.h" |
shimniok | 0:dea4a931b267 | 2 | |
shimniok | 0:dea4a931b267 | 3 | /** An interface for a simple, 1-track, incremental encoder. If using a simple reflectance sensor, then a voltage comparator |
shimniok | 0:dea4a931b267 | 4 | * circuit will be required to generate the pulsetrain. See: http://www.bot-thoughts.com/2011/03/avc-bot-wheel-encoders.html |
shimniok | 0:dea4a931b267 | 5 | * |
shimniok | 0:dea4a931b267 | 6 | */ |
shimniok | 0:dea4a931b267 | 7 | class IncrementalEncoder |
shimniok | 0:dea4a931b267 | 8 | { |
shimniok | 0:dea4a931b267 | 9 | public: |
shimniok | 0:dea4a931b267 | 10 | /** Create an incremental encoder interface. Increments counter at every rise and fall signal |
shimniok | 0:dea4a931b267 | 11 | * |
shimniok | 0:dea4a931b267 | 12 | * @param pin -- the pin to which a digital pulsetrain is sent |
shimniok | 0:dea4a931b267 | 13 | */ |
shimniok | 0:dea4a931b267 | 14 | IncrementalEncoder(PinName pin); |
shimniok | 0:dea4a931b267 | 15 | |
shimniok | 0:dea4a931b267 | 16 | /** Get ticks since last call |
shimniok | 0:dea4a931b267 | 17 | * |
shimniok | 0:dea4a931b267 | 18 | * @returns the number of ticks since the last call to this method |
shimniok | 0:dea4a931b267 | 19 | */ |
shimniok | 0:dea4a931b267 | 20 | unsigned int read(); |
shimniok | 0:dea4a931b267 | 21 | |
shimniok | 0:dea4a931b267 | 22 | /** Get total tick count since last reset |
shimniok | 0:dea4a931b267 | 23 | * |
shimniok | 0:dea4a931b267 | 24 | * @returns total ticks since the last reset or instantiation |
shimniok | 0:dea4a931b267 | 25 | */ |
shimniok | 0:dea4a931b267 | 26 | unsigned int readTotal(); |
shimniok | 0:dea4a931b267 | 27 | |
shimniok | 0:dea4a931b267 | 28 | /** Reset the tick counter |
shimniok | 0:dea4a931b267 | 29 | * |
shimniok | 0:dea4a931b267 | 30 | */ |
shimniok | 0:dea4a931b267 | 31 | void reset(); |
shimniok | 0:dea4a931b267 | 32 | |
shimniok | 0:dea4a931b267 | 33 | private: |
shimniok | 0:dea4a931b267 | 34 | unsigned int _lastTicks; |
shimniok | 0:dea4a931b267 | 35 | unsigned int _ticks; |
shimniok | 0:dea4a931b267 | 36 | InterruptIn _interrupt; |
shimniok | 0:dea4a931b267 | 37 | void _increment(); |
shimniok | 0:dea4a931b267 | 38 | }; |