RoboidControl-cpp/Encoder.h

27 lines
566 B
C++

#pragma once
class Encoder {
public:
Encoder();
Encoder(unsigned char pin, unsigned char transitionsPerRotation);
float GetPulsesPerSecond();
float GetRevolutionsPerSecond();
void ResetDistance();
float GetRotationDistance();
void Update(float timeStep);
virtual void StartCountingRevolutions();
virtual float RestartCountingRevolutions();
protected:
static void InterruptHandler();
static volatile unsigned char transitionCount;
unsigned char transitionsPerRotation;
float rps;
float distance; // this is direction agnostic
};