zhouhang shao
/
test
test
encoder.h@3:34a763e93423, 2017-05-07 (annotated)
- Committer:
- szh66
- Date:
- Sun May 07 01:31:52 2017 +0000
- Revision:
- 3:34a763e93423
- Parent:
- 2:b78dfa2afe92
- Child:
- 6:9f698d1b2996
motor circuit test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
szh66 | 3:34a763e93423 | 1 | #ifndef ENCODER_H |
szh66 | 3:34a763e93423 | 2 | #define ENCODER_H |
szh66 | 3:34a763e93423 | 3 | #include "mbed.h" |
szh66 | 3:34a763e93423 | 4 | |
szh66 | 3:34a763e93423 | 5 | /* |
szh66 | 3:34a763e93423 | 6 | * Reset both encoders |
szh66 | 3:34a763e93423 | 7 | */ |
szh66 | 3:34a763e93423 | 8 | void resetEncoders(); |
szh66 | 3:34a763e93423 | 9 | |
szh66 | 3:34a763e93423 | 10 | /* |
szh66 | 3:34a763e93423 | 11 | Returns the average number of pulses across both encoders since last reset. Unit is encoder pulses; intended for straight driving only. |
szh66 | 3:34a763e93423 | 12 | */ |
szh66 | 3:34a763e93423 | 13 | int getEncoderDistance(); |
szh66 | 3:34a763e93423 | 14 | |
szh66 | 3:34a763e93423 | 15 | |
szh66 | 3:34a763e93423 | 16 | class Encoder { |
szh66 | 3:34a763e93423 | 17 | public: |
szh66 | 3:34a763e93423 | 18 | volatile int pulses; |
szh66 | 3:34a763e93423 | 19 | |
szh66 | 3:34a763e93423 | 20 | Encoder(PinName channelA, PinName channelB); |
szh66 | 3:34a763e93423 | 21 | |
szh66 | 3:34a763e93423 | 22 | //Reset the encoder |
szh66 | 3:34a763e93423 | 23 | void reset(void); |
szh66 | 3:34a763e93423 | 24 | |
szh66 | 3:34a763e93423 | 25 | //Gets pulses by directly querying the encoder. |
szh66 | 3:34a763e93423 | 26 | operator int() { |
szh66 | 3:34a763e93423 | 27 | return pulses; |
szh66 | 3:34a763e93423 | 28 | } |
szh66 | 3:34a763e93423 | 29 | |
szh66 | 3:34a763e93423 | 30 | private: |
szh66 | 3:34a763e93423 | 31 | InterruptIn channelA_; |
szh66 | 3:34a763e93423 | 32 | InterruptIn channelB_; |
szh66 | 3:34a763e93423 | 33 | int prevState_; |
szh66 | 3:34a763e93423 | 34 | int currState_; |
szh66 | 3:34a763e93423 | 35 | |
szh66 | 3:34a763e93423 | 36 | void encode(void); |
szh66 | 3:34a763e93423 | 37 | }; |
szh66 | 3:34a763e93423 | 38 | |
szh66 | 3:34a763e93423 | 39 | |
szh66 | 3:34a763e93423 | 40 | extern Encoder leftEncoder; |
szh66 | 3:34a763e93423 | 41 | |
szh66 | 3:34a763e93423 | 42 | |
szh66 | 3:34a763e93423 | 43 | #endif |