File evamTA6586Driver.h¶
File List > src > evamTA6586Driver.h
Go to the documentation of this file
#pragma once
#include <Arduino.h>
namespace evam
{
struct TA6586Config {
int forwardPin;
int backwardPin;
TA6586Config(int forwardPin, int backwardPin) : forwardPin(forwardPin), backwardPin(backwardPin) {}
};
template <int kForwardPin, int kBackwardPin>
class TA6586Driver
{
private:
TA6586Config mConfig;
public:
TA6586Driver() : mConfig(kForwardPin, kBackwardPin)
{
pinMode(mConfig.forwardPin, OUTPUT);
pinMode(mConfig.backwardPin, OUTPUT);
actBipolar(0);
}
template<typename... Args>
TA6586Driver(TA6586Config config, Args... args) : mConfig(config)
{
pinMode(mConfig.forwardPin, OUTPUT);
pinMode(mConfig.backwardPin, OUTPUT);
actBipolar(0);
}
int GetForwardPin() const
{
return mConfig.forwardPin;
}
int GetBackwardPin() const
{
return mConfig.backwardPin;
}
protected:
void actBipolar(signed short aValue)
{
int normalized = map(constrain(aValue, -1000, 1000), -1000, 1000, -255, 255);
analogWrite(mConfig.forwardPin, max(0, normalized));
analogWrite(mConfig.backwardPin, max(0, -normalized));
}
};
}