test

Dependencies:   RemoteIR mbed

Committer:
kolanery
Date:
Sat May 13 19:42:23 2017 +0000
Revision:
6:9f698d1b2996
Parent:
3:34a763e93423
update test case

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kolanery 6:9f698d1b2996 1 /*
szh66 3:34a763e93423 2 #include "encoder.h"
kolanery 6:9f698d1b2996 3
kolanery 6:9f698d1b2996 4
szh66 3:34a763e93423 5 void resetEncoders(){
szh66 3:34a763e93423 6 leftEncoder.reset();
szh66 3:34a763e93423 7 }
szh66 3:34a763e93423 8
szh66 3:34a763e93423 9 int getEncoderDistance(){
szh66 3:34a763e93423 10 return (leftEncoder) >> 1;
szh66 3:34a763e93423 11 }
szh66 3:34a763e93423 12
szh66 3:34a763e93423 13 Encoder::Encoder(PinName channelA, PinName channelB) :
szh66 3:34a763e93423 14 channelA_(channelA),
szh66 3:34a763e93423 15 channelB_(channelB){
szh66 3:34a763e93423 16 pulses = 0;
szh66 3:34a763e93423 17
szh66 3:34a763e93423 18 //Workout what the current state is.
szh66 3:34a763e93423 19 int chanA = channelA_.read();
szh66 3:34a763e93423 20 int chanB = channelB_.read();
szh66 3:34a763e93423 21
szh66 3:34a763e93423 22 //2-bit state.
szh66 3:34a763e93423 23 currState_ = (chanA << 1) | (chanB);
szh66 3:34a763e93423 24 prevState_ = currState_;
szh66 3:34a763e93423 25
szh66 3:34a763e93423 26 channelA_.rise(this, &Encoder::encode);
szh66 3:34a763e93423 27 channelA_.fall(this, &Encoder::encode);
szh66 3:34a763e93423 28 }
szh66 3:34a763e93423 29
szh66 3:34a763e93423 30 //Internally updates the pulse count for the encoder.
szh66 3:34a763e93423 31 void Encoder::encode(void) {
szh66 3:34a763e93423 32 int chanA = channelA_.read();
szh66 3:34a763e93423 33 int chanB = channelB_.read();
szh66 3:34a763e93423 34
szh66 3:34a763e93423 35 //2-bit state.
szh66 3:34a763e93423 36 currState_ = (chanA << 1) | (chanB);
szh66 3:34a763e93423 37
szh66 3:34a763e93423 38 //11->00->11->00 is counter clockwise rotation or "forward".
szh66 3:34a763e93423 39 if ((prevState_ == 0x3 && currState_ == 0x0) ||
szh66 3:34a763e93423 40 (prevState_ == 0x0 && currState_ == 0x3)) {
szh66 3:34a763e93423 41 pulses+=2;
szh66 3:34a763e93423 42 }
szh66 3:34a763e93423 43 //10->01->10->01 is clockwise rotation or "backward".
szh66 3:34a763e93423 44 else if ((prevState_ == 0x2 && currState_ == 0x1) ||
szh66 3:34a763e93423 45 (prevState_ == 0x1 && currState_ == 0x2)) {
szh66 3:34a763e93423 46 pulses-=2;
szh66 3:34a763e93423 47 }
szh66 3:34a763e93423 48
szh66 3:34a763e93423 49 prevState_ = currState_;
szh66 3:34a763e93423 50 }
szh66 3:34a763e93423 51
szh66 3:34a763e93423 52 //Resets the encoder
szh66 3:34a763e93423 53 void Encoder::reset(void) {
szh66 3:34a763e93423 54 pulses = 0;
kolanery 6:9f698d1b2996 55 }*/