Library for Pololu Motor driver - VNH5019 Motor Driver Carrier https://www.pololu.com/product/1451

Dependents:   VNH5019_2 VNH5019_1

MotorDriver.cpp

Committer:
TeaPack_CZ
Date:
2017-02-25
Revision:
0:c54243e9db1d

File content as of revision 0:c54243e9db1d:

#include "MotorDriver.h"

MotorDriver::MotorDriver(PinName Pwm, PinName DirA, PinName DirB) : _pwm(Pwm), _dirA(DirA), _dirB(DirB){
        _dirA = 0;
        _dirB = 0;
        _pwm.period_us(50);
        _pwm.write(0.0);
        enabled = 0;
}

void MotorDriver::setSpeed(float power_f)
{
    bool dir;
    int speed = abs(power_f);
    
    if(power_f < 0)
        dir = 1;
    else
        dir = 0;

    setSpeed(dir,speed);        
}

void MotorDriver::setSpeed(bool dir, int power)
{
    if(enabled)
    {
        _pwm.write(0.0);
        _dirA = 0;
        _dirB = 0;
        _dirA = dir;
        _dirB = !dir;
        _pwm.write(power/100.0);
    }
}
    
void MotorDriver::setEnabled(bool newState)
{
    enabled = newState;
    if(!enabled)
        stop();
}

bool MotorDriver::isEnabled()
{
    return enabled;
}

void MotorDriver::stop()
{
    _pwm.write(0.0);
    _dirA = 0;
    _dirB = 0;
}
    
void MotorDriver::hold()
{
    if(enabled)
    {
        _pwm.write(0.0);
        wait(0.001);
        _dirA = 1;
        _dirB = 1;
    }
}