Library to read out speed and position from a quadrature encoder. This library uses X2 decoding.
Dependents: BMT-K9_encoder BMT-K9-Regelaar K9motoraansturing_copy EMGverwerking ... more
Diff: encoder.cpp
- Revision:
- 2:0998a8fd7727
- Parent:
- 0:c90b36abcbf8
- Child:
- 4:69be34f39c9f
--- a/encoder.cpp Tue Oct 01 21:47:15 2013 +0000 +++ b/encoder.cpp Mon Nov 04 09:56:06 2013 +0000 @@ -1,9 +1,13 @@ #include "encoder.h" -Encoder::Encoder(PinName int_a, PinName int_b) : pin_a(int_a), pin_b(int_b) +Encoder::Encoder(PinName pos_a, PinName pos_b) : pin_a(pos_a), pin_b(pos_b) { + DigitalOut rled(LED_RED); + rled = 0; EncoderTimer.start(); + pin_a.mode(PullUp); + pin_b.mode(PullUp); pin_a.fall(this,&Encoder::encoderFalling); pin_a.rise(this,&Encoder::encoderRising); m_position = 0; @@ -15,15 +19,15 @@ { //temporary speed storage, in case higher interrupt level does stuff float temp_speed; - int motortime_now = EncoderTimer.read_us(); - EncoderTimer.reset(); - EncoderTimeout.attach(this,&Encoder::timeouthandler,0.1); + //int motortime_now = EncoderTimer.read_us(); + //EncoderTimer.reset(); + //EncoderTimeout.attach(this,&Encoder::timeouthandler,0.1); /*calculate as ticks per second*/ - if(zero_speed) - temp_speed = 0; - else - temp_speed = 1000000./motortime_now; - zero_speed = false; + //if(zero_speed) + // temp_speed = 0; + //else + // temp_speed = 1000000./motortime_now; + //zero_speed = false; if(pin_b) { m_position++; @@ -40,15 +44,15 @@ { //temporary speed storage, in case higher interrupt level does stuff float temp_speed; - int motortime_now = EncoderTimer.read_us(); - EncoderTimer.reset(); - EncoderTimeout.attach(this,&Encoder::encoderFalling,0.1); + //int motortime_now = EncoderTimer.read_us(); + //EncoderTimer.reset(); + //EncoderTimeout.attach(this,&Encoder::encoderFalling,0.1); /*calculate as ticks per second*/ - if(zero_speed) - temp_speed = 0; - else - temp_speed = 1000000./motortime_now; - zero_speed = false; + //if(zero_speed) + // temp_speed = 0; + //else + // temp_speed = 1000000./motortime_now; + //zero_speed = false; if(pin_b) { m_position--;