23 , m_interrupt(config.
pin)
25 m_interrupt.rise(callback(
this, &Encoder::increment));
28 DigitalIn inputPin(config.
pin);
29 inputPin.mode(PullUp);
38 float update(uint16_t timeSinceLastCallUs)
40 m_speed = (1000.0 * m_config.wheelCircumference * m_count) / (m_config.pulsePerRevolution * m_config.gearRatio * timeSinceLastCallUs);
41 m_distanceCount += m_count;
52 float speed()
const {
return m_speed; }
61 float encoderParams = m_config.pulsePerRevolution * m_config.gearRatio * 1000 ;
62 return static_cast<float>(m_config.wheelCircumference * m_distanceCount) / (encoderParams);
77 void increment() { m_count++; }
80 InterruptIn m_interrupt;
81 volatile uint16_t m_count = 0;
83 long m_distanceCount = 0;
float speed() const
Definition: Encoder.h:52
float update(uint16_t timeSinceLastCallUs)
Definition: Encoder.h:38
float gearRatio
Definition: Encoder.h:12
Definition: BorderDetector.h:6
int wheelCircumference
Definition: Encoder.h:13
PinName pin
Definition: Encoder.h:10
int pulsePerRevolution
Definition: Encoder.h:11
Encoder(Config config)
Definition: Encoder.h:21
float distance() const
Definition: Encoder.h:59
void resetDistance()
Definition: Encoder.h:68