Files
Leo-ElixirLights/components/movement/include/stepperDrv.hpp
T

36 lines
766 B
C++

/**
* @file stepperDrv.hpp
* @author Gustice
* @brief Abstraction for Stepper driver
*
* @copyright Copyright (c) 2024
*/
#pragma once
#include "gpioPort.hpp"
#include "pwmPort.hpp"
#include <array>
#include <vector>
class StepperDriver {
public:
struct StepCplx {
int8_t increment{};
uint8_t subPos{};
};
StepperDriver(int resolution)
: Resolution(resolution), Quad(Resolution / 4) {}
virtual StepCplx fullStep(int8_t cnt) = 0;
virtual StepCplx step(int8_t cnt) = 0;
virtual StepCplx setPos(uint8_t pos) = 0;
uint8_t getSubPos() {
return _position;
}
protected:
const uint8_t Resolution;
const uint8_t Quad;
int8_t _position{};
virtual void setOutput(uint8_t pos) = 0;
};