Rotary Encoder handling library for mbed
REnc.h
- Committer:
- ChuckTimber
- Date:
- 2014-08-06
- Revision:
- 1:2732adb68dad
- Parent:
- 0:c905f9e6866f
- Child:
- 2:46173a05338e
File content as of revision 1:2732adb68dad:
#ifndef MBED_RENC_H #define MBED_RENC_H #include "mbed.h" /** class to handle a rotary encoder * The class use DigitalIn and Ticker * * Refered to: http://elm-chan.org/docs/tec/te04.html * * Example: * @code * // REnc sample * #include "mbed.h" * #include "REnc.h" * void proc_REnc_right(void); * void proc_REnc_left(void); * * // void proc_REnc_right(void) { } * // void proc_REnc_left(void) { } * * REnc renc(dp1, dp2); * * int main() * { * * // renc.setHandleRight(&proc_REnc_right); * // renc.setHandleLeft(&proc_REnc_left); * * while(1) { * if (renc.CMD == FORWARD) { * proc_REnc_right(); * renc.CMD = STOP; * } else if (renc.CMD == REVERSE) { * proc_REnc_left(); * renc.CMD = STOP; * } * } * } * @endcode */ namespace mbed { enum { STOP, FORWARD, REVERSE }; /** class to handle a rotary encoder * The class uses DigitalIn and Ticker */ class REnc { public: unsigned char CMD; unsigned char STABLE; void setHandleRight(void (*fptr)(void)); void setHandleLeft(void (*fptr)(void)); REnc(PinName pina, PinName pinb); private: void sample_encoder(void); void (*mRightCallback)(void); void (*mLeftCallback)(void); DigitalIn _pina; DigitalIn _pinb; Ticker _tick; }; /* end of REnc class definition */ } /* end of namespace mbed */ #endif