On Progress. Di baca pelan-pelan :'

Dependencies:   Motor PID QEI mbed

Fork of Riset-Odometry by Gustav Aditya Permana

Committer:
gustavaditya
Date:
Mon Nov 07 12:42:58 2016 +0000
Revision:
2:2a1e06b525dc
Parent:
0:b455cd43929c
On Progress

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gustavaditya 0:b455cd43929c 1 #ifndef ENCODERKRAI_H
gustavaditya 0:b455cd43929c 2 #define ENCODERKRAI_H
gustavaditya 0:b455cd43929c 3
gustavaditya 0:b455cd43929c 4 /**
gustavaditya 0:b455cd43929c 5 * Includes
gustavaditya 0:b455cd43929c 6 */
gustavaditya 0:b455cd43929c 7 #include "mbed.h"
gustavaditya 0:b455cd43929c 8
gustavaditya 0:b455cd43929c 9 /**
gustavaditya 0:b455cd43929c 10 * Defines
gustavaditya 0:b455cd43929c 11 */
gustavaditya 0:b455cd43929c 12 #define PREV_MASK 0x1 //Mask for the previous state in determining direction
gustavaditya 0:b455cd43929c 13 //of rotation.
gustavaditya 0:b455cd43929c 14 #define CURR_MASK 0x2 //Mask for the current state in determining direction
gustavaditya 0:b455cd43929c 15 //of rotation.
gustavaditya 0:b455cd43929c 16 #define INVALID 0x3 //XORing two states where both bits have changed.
gustavaditya 0:b455cd43929c 17
gustavaditya 0:b455cd43929c 18 /**
gustavaditya 0:b455cd43929c 19 * Quadrature Encoder Interface.
gustavaditya 0:b455cd43929c 20 */
gustavaditya 0:b455cd43929c 21 class encoderKRAI {
gustavaditya 0:b455cd43929c 22
gustavaditya 0:b455cd43929c 23 public:
gustavaditya 0:b455cd43929c 24
gustavaditya 0:b455cd43929c 25 typedef enum Encoding {
gustavaditya 0:b455cd43929c 26
gustavaditya 0:b455cd43929c 27 X2_ENCODING,
gustavaditya 0:b455cd43929c 28 X4_ENCODING
gustavaditya 0:b455cd43929c 29
gustavaditya 0:b455cd43929c 30 } Encoding;
gustavaditya 0:b455cd43929c 31
gustavaditya 0:b455cd43929c 32 /** Membuat interface dari encoder
gustavaditya 0:b455cd43929c 33 *
gustavaditya 0:b455cd43929c 34 * @param inA DigitalIn, out A dari encoder
gustavaditya 0:b455cd43929c 35 * @param inB DigitalIn, out B dari encoder
gustavaditya 0:b455cd43929c 36 */
gustavaditya 0:b455cd43929c 37 encoderKRAI(PinName channelA, PinName channelB, int pulsesPerRev, Encoding encoding = X2_ENCODING);
gustavaditya 0:b455cd43929c 38
gustavaditya 0:b455cd43929c 39 /**
gustavaditya 0:b455cd43929c 40 * Reset encoder.
gustavaditya 0:b455cd43929c 41 *
gustavaditya 0:b455cd43929c 42 * Menset pulse dan revolusi/putaran menjadi 0
gustavaditya 0:b455cd43929c 43 */
gustavaditya 0:b455cd43929c 44 void reset(void);
gustavaditya 0:b455cd43929c 45
gustavaditya 0:b455cd43929c 46 /**
gustavaditya 0:b455cd43929c 47 * Membaca pulse yang didapat oleh encoder
gustavaditya 0:b455cd43929c 48 *
gustavaditya 0:b455cd43929c 49 * @return Nilai pulse yang telah dilalui.
gustavaditya 0:b455cd43929c 50 */
gustavaditya 0:b455cd43929c 51 int getPulses(void);
gustavaditya 0:b455cd43929c 52
gustavaditya 0:b455cd43929c 53 /**
gustavaditya 0:b455cd43929c 54 * Membaca putaran yang didapat oleh encoder
gustavaditya 0:b455cd43929c 55 *
gustavaditya 0:b455cd43929c 56 * @return Nilai revolusi/putaran yang telah dilalui.
gustavaditya 0:b455cd43929c 57 */
gustavaditya 0:b455cd43929c 58 int getRevolutions(void);
gustavaditya 0:b455cd43929c 59
gustavaditya 0:b455cd43929c 60 /**
gustavaditya 0:b455cd43929c 61 * Membaca pulse yang didapat oleh encoder
gustavaditya 0:b455cd43929c 62 *
gustavaditya 0:b455cd43929c 63 * @return Nilai pulse yang telah dilalui.
gustavaditya 0:b455cd43929c 64 */
gustavaditya 0:b455cd43929c 65 //int readDeltaPulses(void);
gustavaditya 0:b455cd43929c 66
gustavaditya 0:b455cd43929c 67 /**
gustavaditya 0:b455cd43929c 68 * Membaca putaran yang didapat oleh encoder
gustavaditya 0:b455cd43929c 69 *
gustavaditya 0:b455cd43929c 70 * @return Nilai revolusi/putaran yang telah dilalui.
gustavaditya 0:b455cd43929c 71 */
gustavaditya 0:b455cd43929c 72 //int readDeltaRevolutions(void);
gustavaditya 0:b455cd43929c 73
gustavaditya 0:b455cd43929c 74 private:
gustavaditya 0:b455cd43929c 75
gustavaditya 0:b455cd43929c 76 /**
gustavaditya 0:b455cd43929c 77 * Menghitung pulse
gustavaditya 0:b455cd43929c 78 *
gustavaditya 0:b455cd43929c 79 * Digunakan setiap rising/falling edge baik channel A atau B
gustavaditya 0:b455cd43929c 80 * Membaca putaran CW atau CCW => mengakibatkan pertambahan/pengurangan pulse
gustavaditya 0:b455cd43929c 81 */
gustavaditya 0:b455cd43929c 82 void encode(void);
gustavaditya 0:b455cd43929c 83
gustavaditya 0:b455cd43929c 84 /**
gustavaditya 0:b455cd43929c 85 * Indeks setiap rising edge untuk menghitung putaran
gustavaditya 0:b455cd43929c 86 * Nilai bertambah 1
gustavaditya 0:b455cd43929c 87 */
gustavaditya 0:b455cd43929c 88 //void index(void);
gustavaditya 0:b455cd43929c 89
gustavaditya 0:b455cd43929c 90 Encoding encoding_;
gustavaditya 0:b455cd43929c 91
gustavaditya 0:b455cd43929c 92 InterruptIn channelA_;
gustavaditya 0:b455cd43929c 93 InterruptIn channelB_;
gustavaditya 0:b455cd43929c 94 //InterruptIn index_;
gustavaditya 0:b455cd43929c 95
gustavaditya 0:b455cd43929c 96 int pulsesPerRev_;
gustavaditya 0:b455cd43929c 97 int prevState_;
gustavaditya 0:b455cd43929c 98 int currState_;
gustavaditya 0:b455cd43929c 99
gustavaditya 0:b455cd43929c 100 volatile int pulses_;
gustavaditya 0:b455cd43929c 101 volatile int revolutions_;
gustavaditya 0:b455cd43929c 102
gustavaditya 0:b455cd43929c 103
gustavaditya 0:b455cd43929c 104 };
gustavaditya 0:b455cd43929c 105
gustavaditya 0:b455cd43929c 106 #endif /* ENCODERKRAI_H */