Handle rotary encoder connected to two pins. With interrupt. Operating encoder changes an int position value that can be polled.
Dependents: encoder_test distance_measure speed_measure straight_speed_control ... more
CRotaryEncoder.h
- Committer:
- Raabinator
- Date:
- 2010-11-09
- Revision:
- 0:56f636261771
File content as of revision 0:56f636261771:
#ifndef CROTENC_H_INCLUDED #define CROTENC_H_INCLUDED #include "mbed.h" /* This Class handles a rotary encoder like the one from Pollin electronic (Panasonic EVEP...). * It uses two pins, one creating an interrupt on change. * Rotation direction is determined by checking the state of the other pin. * * Operating the encoder changes an internal integer value that can be read * by Get() or the operator int() functions. * A new value can be set by Set(value) or opperator=. * * Autor: Thomas Raab (Raabinator) * * Dent steady point ! ! ! * +-----+ +-----+ * pinA (interrupt) | | | | * --+ +-----+ +--- * +-----+ +-----+ * pinB | | | | * ----+ +-----+ +- * --> C.W * CW: increases position value * CCW: decreases position value * * changelog: * * 09. Nov. 2010 * First version published. * */ class CRotaryEncoder { public: CRotaryEncoder(PinName pinA, PinName pinB); ~CRotaryEncoder(); int Get(void); inline operator int() { return Get(); } void Set(int value); inline CRotaryEncoder& operator= ( int value ) { Set(value); return *this; } private: InterruptIn *m_pinA; DigitalIn *m_pinB; volatile int m_position; void rise(void); void fall(void); }; #endif