Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
encoderKRAI/encoderKRAI.h@0:62ded4362bbc, 2021-11-23 (annotated)
- 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?
| User | Revision | Line number | New 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 */ |