Library for digital quadrature encoder
Dependents: VNH5019_2 VNH5019_1
Encoder.h@3:6cd47cdf8708, 2016-09-21 (annotated)
- Committer:
- TeaPack_CZ
- Date:
- Wed Sep 21 19:49:25 2016 +0000
- Revision:
- 3:6cd47cdf8708
- Parent:
- 2:668ac045b338
Correct typo in sample code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TeaPack_CZ | 1:ff2c7733729e | 1 | /** Class for the digital quadrature encoder. |
TeaPack_CZ | 1:ff2c7733729e | 2 | * This class is using two pins for detecting all edges generated by the quadrature encoder.\n\n |
TeaPack_CZ | 1:ff2c7733729e | 3 | * |
TeaPack_CZ | 1:ff2c7733729e | 4 | * |
TeaPack_CZ | 2:668ac045b338 | 5 | * Writen by: Jan Crha (TeaPack_CZ), 2016. |
TeaPack_CZ | 1:ff2c7733729e | 6 | * |
TeaPack_CZ | 2:668ac045b338 | 7 | * Last modified: 2016-09-21 |
TeaPack_CZ | 1:ff2c7733729e | 8 | * |
TeaPack_CZ | 1:ff2c7733729e | 9 | * Example: |
TeaPack_CZ | 1:ff2c7733729e | 10 | * @code |
TeaPack_CZ | 1:ff2c7733729e | 11 | * #include "mbed.h" |
TeaPack_CZ | 1:ff2c7733729e | 12 | * #include "Encoder.h" |
TeaPack_CZ | 1:ff2c7733729e | 13 | * |
TeaPack_CZ | 1:ff2c7733729e | 14 | * Serial PC(USBTX,USBRX); |
TeaPack_CZ | 1:ff2c7733729e | 15 | * Encoder encoder(p11,p12); |
TeaPack_CZ | 1:ff2c7733729e | 16 | * |
TeaPack_CZ | 1:ff2c7733729e | 17 | * int main(){ |
TeaPack_CZ | 1:ff2c7733729e | 18 | * |
TeaPack_CZ | 1:ff2c7733729e | 19 | * encoder.setEnabled(true); |
TeaPack_CZ | 1:ff2c7733729e | 20 | * |
TeaPack_CZ | 1:ff2c7733729e | 21 | * while(1) |
TeaPack_CZ | 1:ff2c7733729e | 22 | * { |
TeaPack_CZ | 3:6cd47cdf8708 | 23 | * PC.printf("%d",encoder.getDist()); |
TeaPack_CZ | 1:ff2c7733729e | 24 | * wait(0.1); |
TeaPack_CZ | 1:ff2c7733729e | 25 | * } |
TeaPack_CZ | 1:ff2c7733729e | 26 | * } |
TeaPack_CZ | 1:ff2c7733729e | 27 | * @endcode |
TeaPack_CZ | 1:ff2c7733729e | 28 | */ |
TeaPack_CZ | 1:ff2c7733729e | 29 | |
TeaPack_CZ | 1:ff2c7733729e | 30 | #include "mbed.h" |
TeaPack_CZ | 1:ff2c7733729e | 31 | |
TeaPack_CZ | 1:ff2c7733729e | 32 | class Encoder{ |
TeaPack_CZ | 1:ff2c7733729e | 33 | |
TeaPack_CZ | 1:ff2c7733729e | 34 | public: |
TeaPack_CZ | 1:ff2c7733729e | 35 | |
TeaPack_CZ | 1:ff2c7733729e | 36 | /** Class contructor. |
TeaPack_CZ | 1:ff2c7733729e | 37 | * Both pins have to be compatible with the InterruptIn class. |
TeaPack_CZ | 1:ff2c7733729e | 38 | */ |
TeaPack_CZ | 1:ff2c7733729e | 39 | Encoder(PinName InA, PinName InB); |
TeaPack_CZ | 1:ff2c7733729e | 40 | |
TeaPack_CZ | 1:ff2c7733729e | 41 | /** Function for repetitive getting counts from the encoder |
TeaPack_CZ | 1:ff2c7733729e | 42 | * @return returns number of edges detected from the last call |
TeaPack_CZ | 1:ff2c7733729e | 43 | */ |
TeaPack_CZ | 1:ff2c7733729e | 44 | int getDist(); |
TeaPack_CZ | 1:ff2c7733729e | 45 | |
TeaPack_CZ | 1:ff2c7733729e | 46 | /** Function returning total counts, direction dependent. |
TeaPack_CZ | 1:ff2c7733729e | 47 | * counts can be set to zero by calling function clr() |
TeaPack_CZ | 1:ff2c7733729e | 48 | */ |
TeaPack_CZ | 1:ff2c7733729e | 49 | int getTotalDist(); |
TeaPack_CZ | 1:ff2c7733729e | 50 | |
TeaPack_CZ | 1:ff2c7733729e | 51 | /** Function setting total distance to zero*/ |
TeaPack_CZ | 1:ff2c7733729e | 52 | void clr(); |
TeaPack_CZ | 1:ff2c7733729e | 53 | |
TeaPack_CZ | 1:ff2c7733729e | 54 | /** Function for enabling encoder interrupts detection*/ |
TeaPack_CZ | 1:ff2c7733729e | 55 | void setEnabled(bool); |
TeaPack_CZ | 1:ff2c7733729e | 56 | |
TeaPack_CZ | 1:ff2c7733729e | 57 | /** Function for getting state of encoders */ |
TeaPack_CZ | 1:ff2c7733729e | 58 | bool isEnabled(); |
TeaPack_CZ | 1:ff2c7733729e | 59 | |
TeaPack_CZ | 1:ff2c7733729e | 60 | private: |
TeaPack_CZ | 1:ff2c7733729e | 61 | |
TeaPack_CZ | 1:ff2c7733729e | 62 | void enable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 63 | void disable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 64 | |
TeaPack_CZ | 1:ff2c7733729e | 65 | DigitalIn _pinA; |
TeaPack_CZ | 1:ff2c7733729e | 66 | DigitalIn _pinB; |
TeaPack_CZ | 1:ff2c7733729e | 67 | InterruptIn _inA; |
TeaPack_CZ | 1:ff2c7733729e | 68 | InterruptIn _inB; |
TeaPack_CZ | 1:ff2c7733729e | 69 | |
TeaPack_CZ | 1:ff2c7733729e | 70 | int puls; |
TeaPack_CZ | 1:ff2c7733729e | 71 | int dist; |
TeaPack_CZ | 1:ff2c7733729e | 72 | int total_dist; |
TeaPack_CZ | 1:ff2c7733729e | 73 | bool enabled; |
TeaPack_CZ | 1:ff2c7733729e | 74 | |
TeaPack_CZ | 1:ff2c7733729e | 75 | void inAhi(); |
TeaPack_CZ | 1:ff2c7733729e | 76 | void inAlo(); |
TeaPack_CZ | 1:ff2c7733729e | 77 | void inBhi(); |
TeaPack_CZ | 1:ff2c7733729e | 78 | void inBlo(); |
TeaPack_CZ | 1:ff2c7733729e | 79 | }; |