KRAI ITB GARUDAGO / Mbed 2 deprecated frictionwheel

Dependencies:   mbed

Committer:
putriliza
Date:
Tue Nov 23 10:35:12 2021 +0000
Revision:
0:62ded4362bbc
tes friction wheel (belum PID)

Who changed what in which revision?

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