BacaEncoder

Dependencies:   mbed

Committer:
tamamfirdaus
Date:
Mon Mar 18 15:14:43 2019 +0000
Revision:
0:9853fb2d4bd9
BacaEncoder;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tamamfirdaus 0:9853fb2d4bd9 1 /**
tamamfirdaus 0:9853fb2d4bd9 2 * Header Encoder KRAI
tamamfirdaus 0:9853fb2d4bd9 3 * untuk membaca nilai rotary encoder
tamamfirdaus 0:9853fb2d4bd9 4 **/
tamamfirdaus 0:9853fb2d4bd9 5 #ifndef ENCODERKRAI_H
tamamfirdaus 0:9853fb2d4bd9 6 #define ENCODERKRAI_H
tamamfirdaus 0:9853fb2d4bd9 7
tamamfirdaus 0:9853fb2d4bd9 8 //Bismillahirahamnirahim
tamamfirdaus 0:9853fb2d4bd9 9
tamamfirdaus 0:9853fb2d4bd9 10 //LIBRARY
tamamfirdaus 0:9853fb2d4bd9 11 #include "mbed.h"
tamamfirdaus 0:9853fb2d4bd9 12
tamamfirdaus 0:9853fb2d4bd9 13 /**************************
tamamfirdaus 0:9853fb2d4bd9 14 * Konstanta dan Variabel *
tamamfirdaus 0:9853fb2d4bd9 15 **************************/
tamamfirdaus 0:9853fb2d4bd9 16
tamamfirdaus 0:9853fb2d4bd9 17 //KONSTANTA
tamamfirdaus 0:9853fb2d4bd9 18 #define PREV_MASK 0x1 //Konstanta untuk mengetahui previous direction
tamamfirdaus 0:9853fb2d4bd9 19 #define CURR_MASK 0x2 //Konstanta untuk mengetahui current direction
tamamfirdaus 0:9853fb2d4bd9 20 #define INVALID 0x3 //XORing two states where both bits have changed.
tamamfirdaus 0:9853fb2d4bd9 21
tamamfirdaus 0:9853fb2d4bd9 22 /********************************
tamamfirdaus 0:9853fb2d4bd9 23 * Quadrature Encoder Interface *
tamamfirdaus 0:9853fb2d4bd9 24 ********************************/
tamamfirdaus 0:9853fb2d4bd9 25
tamamfirdaus 0:9853fb2d4bd9 26 class encoderKRAI {
tamamfirdaus 0:9853fb2d4bd9 27
tamamfirdaus 0:9853fb2d4bd9 28 public:
tamamfirdaus 0:9853fb2d4bd9 29
tamamfirdaus 0:9853fb2d4bd9 30 typedef enum Encoding {
tamamfirdaus 0:9853fb2d4bd9 31
tamamfirdaus 0:9853fb2d4bd9 32 X2_ENCODING,
tamamfirdaus 0:9853fb2d4bd9 33 X4_ENCODING
tamamfirdaus 0:9853fb2d4bd9 34
tamamfirdaus 0:9853fb2d4bd9 35 } Encoding;
tamamfirdaus 0:9853fb2d4bd9 36
tamamfirdaus 0:9853fb2d4bd9 37 encoderKRAI(PinName channelA, PinName channelB, int pulsesPerRev, Encoding encoding = X2_ENCODING);
tamamfirdaus 0:9853fb2d4bd9 38 /*******************************************
tamamfirdaus 0:9853fb2d4bd9 39 * Membuat interface dari encoder
tamamfirdaus 0:9853fb2d4bd9 40 * @param inA DigitalIn, out A dari encoder
tamamfirdaus 0:9853fb2d4bd9 41 * @param inB DigitalIn, out B dari encoder
tamamfirdaus 0:9853fb2d4bd9 42 *******************************************/
tamamfirdaus 0:9853fb2d4bd9 43
tamamfirdaus 0:9853fb2d4bd9 44 void reset(void);
tamamfirdaus 0:9853fb2d4bd9 45 /*******************************************
tamamfirdaus 0:9853fb2d4bd9 46 * Reset encoder.
tamamfirdaus 0:9853fb2d4bd9 47 * Reset pembacaaan menjadi 0
tamamfirdaus 0:9853fb2d4bd9 48 *******************************************/
tamamfirdaus 0:9853fb2d4bd9 49
tamamfirdaus 0:9853fb2d4bd9 50 int getPulses(void);
tamamfirdaus 0:9853fb2d4bd9 51 /*******************************************
tamamfirdaus 0:9853fb2d4bd9 52 * Membaca pulse yang didapat oleh encoder
tamamfirdaus 0:9853fb2d4bd9 53 * @return Nilai pulse yang telah dilalui.
tamamfirdaus 0:9853fb2d4bd9 54 *******************************************/
tamamfirdaus 0:9853fb2d4bd9 55
tamamfirdaus 0:9853fb2d4bd9 56 int getRevolutions(void);
tamamfirdaus 0:9853fb2d4bd9 57 /*******************************************
tamamfirdaus 0:9853fb2d4bd9 58 * Membaca putaran yang didapat oleh encoder
tamamfirdaus 0:9853fb2d4bd9 59 * @return Nilai revolusi/putaran yang telah dilalui.
tamamfirdaus 0:9853fb2d4bd9 60 *******************************************/
tamamfirdaus 0:9853fb2d4bd9 61
tamamfirdaus 0:9853fb2d4bd9 62 private:
tamamfirdaus 0:9853fb2d4bd9 63
tamamfirdaus 0:9853fb2d4bd9 64 void encode(void);
tamamfirdaus 0:9853fb2d4bd9 65 /*******************************************
tamamfirdaus 0:9853fb2d4bd9 66 * Menghitung pulse
tamamfirdaus 0:9853fb2d4bd9 67 * Digunakan setiap rising/falling edge baik channel A atau B
tamamfirdaus 0:9853fb2d4bd9 68 * Membaca putaran CW atau CCW => mengakibatkan pertambahan/pengurangan pulse
tamamfirdaus 0:9853fb2d4bd9 69 *******************************************/
tamamfirdaus 0:9853fb2d4bd9 70
tamamfirdaus 0:9853fb2d4bd9 71 //VARIABEL UNTUK PERHITUNGAN PULSE
tamamfirdaus 0:9853fb2d4bd9 72 Encoding encoding_;
tamamfirdaus 0:9853fb2d4bd9 73
tamamfirdaus 0:9853fb2d4bd9 74 InterruptIn channelA_;
tamamfirdaus 0:9853fb2d4bd9 75 InterruptIn channelB_;
tamamfirdaus 0:9853fb2d4bd9 76
tamamfirdaus 0:9853fb2d4bd9 77 int pulsesPerRev_;
tamamfirdaus 0:9853fb2d4bd9 78 int prevState_;
tamamfirdaus 0:9853fb2d4bd9 79 int currState_;
tamamfirdaus 0:9853fb2d4bd9 80
tamamfirdaus 0:9853fb2d4bd9 81 volatile int pulses_;
tamamfirdaus 0:9853fb2d4bd9 82 volatile int revolutions_;
tamamfirdaus 0:9853fb2d4bd9 83
tamamfirdaus 0:9853fb2d4bd9 84
tamamfirdaus 0:9853fb2d4bd9 85 };
tamamfirdaus 0:9853fb2d4bd9 86
tamamfirdaus 0:9853fb2d4bd9 87 #endif /* ENCODERKRAI_H */