ロータリーエンコーダーのライブラリです。 角速度 、 角度 、 RPMなどがだせます。
Dependents: scan2 Test_moter electrocoagulador_teclado 17pwmencoder ... more
バージョンがあがりました。 こちらにあります。 https://developer.mbed.org/users/kikoaac/code/QEI2/ ハードの節約、効率化をしました。複数のQEIを使うのであれば、こちらのほうがいいと思います。
QEI(PinName channelA, PinName channelB, PinName index, int pulsesPerRev, Encoding encoding = X2_ENCODING); Aチ ャンネル、Bチャンネル、Zチャンネル、1周のパルス、タイプ
void reset(void); Pulses=0にする。
int getCurrentState(void); ローテリーエンコーダの現在の値をかえす。(00、01、10、11)
void set(int pul , int rev); pulはPulses,revはRevolutionをセット
int getPulses(void); Pulsesを返す
int getRevolutions(void); Z軸があれば基準からの回転周期をかえす
int getAng_rev(); Z軸がなければこちらを使用してください。
double getAngle(); 基準からの角度(0~360)を返す double getSumangle(); 基準からの角度を返す
double getRPM(); double getRPS(); double getRPMS(); double getRPUS(); 回転周期をかえす。
QEI.h
- Committer:
- kikoaac
- Date:
- 2015-04-17
- Revision:
- 0:a24686ca50ab
File content as of revision 0:a24686ca50ab:
#ifndef QEI_H #define QEI_H #include "mbed.h" #define PREV_MASK 0x1 //Mask for the previous state in determining direction //of rotation. #define CURR_MASK 0x2 //Mask for the current state in determining direction //of rotation. #define INVALID 0x3 //XORing two states where both bits have changed. class QEI { public: typedef enum Encoding { X2_ENCODING, X4_ENCODING } Encoding; QEI(PinName channelA, PinName channelB, PinName index, int pulsesPerRev, Encoding encoding = X2_ENCODING); void reset(void); int getCurrentState(void); void set(int pul , int rev); int getPulses(void); int getRevolutions(void); int getAng_rev(); double getAngle(); double getSumangle(); double getRPM(); double getRPS(); double getRPMS(); double getRPUS(); int pulsesPerRev_; private: Timer Mper , Rper ,MSper ,USper; Ticker Tick; double RPM , RPS ,RPMS , RPUS; void encode(void); void index(void); Encoding encoding_; InterruptIn channelA_; InterruptIn channelB_; InterruptIn index_; int round_rev; int prevState_; int currState_; double angle_ , sumangle; int angle_pulses; volatile int pulses_; volatile int revolutions_; }; #endif