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

Dependents:   AVC_20110423 incrementalencoder-pid-robot DataBus2018

Committer:
shimniok
Date:
Sun Dec 23 18:29:10 2018 +0000
Revision:
1:5011d894d5a7
Parent:
0:dea4a931b267
Updated to use current callback interface

Who changed what in which revision?

UserRevisionLine numberNew 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 };