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