16 Mei 2019
encoderKRAI.h
- Committer:
- tamamfirdaus
- Date:
- 2019-05-16
- Revision:
- 0:88b904c4ffbb
File content as of revision 0:88b904c4ffbb:
/** * Header Encoder KRAI * untuk membaca nilai rotary encoder **/ #ifndef ENCODERKRAI_H #define ENCODERKRAI_H //Bismillahirahamnirahim //LIBRARY #include "mbed.h" /************************** * Konstanta dan Variabel * **************************/ //KONSTANTA #define PREV_MASK 0x1 //Konstanta untuk mengetahui previous direction #define CURR_MASK 0x2 //Konstanta untuk mengetahui current direction #define INVALID 0x3 //XORing two states where both bits have changed. /******************************** * Quadrature Encoder Interface * ********************************/ class encoderKRAI { public: typedef enum Encoding { X2_ENCODING, X4_ENCODING } Encoding; encoderKRAI(PinName channelA, PinName channelB, int pulsesPerRev, Encoding encoding = X2_ENCODING); /******************************************* * Membuat interface dari encoder * @param inA DigitalIn, out A dari encoder * @param inB DigitalIn, out B dari encoder *******************************************/ void reset(void); /******************************************* * Reset encoder. * Reset pembacaaan menjadi 0 *******************************************/ int getPulses(void); /******************************************* * Membaca pulse yang didapat oleh encoder * @return Nilai pulse yang telah dilalui. *******************************************/ int getRevolutions(void); /******************************************* * Membaca putaran yang didapat oleh encoder * @return Nilai revolusi/putaran yang telah dilalui. *******************************************/ private: void encode(void); /******************************************* * Menghitung pulse * Digunakan setiap rising/falling edge baik channel A atau B * Membaca putaran CW atau CCW => mengakibatkan pertambahan/pengurangan pulse *******************************************/ //VARIABEL UNTUK PERHITUNGAN PULSE Encoding encoding_; InterruptIn channelA_; InterruptIn channelB_; int pulsesPerRev_; int prevState_; int currState_; volatile int pulses_; volatile int revolutions_; }; #endif /* ENCODERKRAI_H */