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

Dependents:   VNH5019_2 VNH5019_1

Committer:
TeaPack_CZ
Date:
Sat Feb 25 22:36:03 2017 +0000
Revision:
1:c1767d70d47e
Parent:
0:c54243e9db1d
Improve class description

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TeaPack_CZ 0:c54243e9db1d 1 #include "MotorDriver.h"
TeaPack_CZ 0:c54243e9db1d 2
TeaPack_CZ 0:c54243e9db1d 3 MotorDriver::MotorDriver(PinName Pwm, PinName DirA, PinName DirB) : _pwm(Pwm), _dirA(DirA), _dirB(DirB){
TeaPack_CZ 0:c54243e9db1d 4 _dirA = 0;
TeaPack_CZ 0:c54243e9db1d 5 _dirB = 0;
TeaPack_CZ 0:c54243e9db1d 6 _pwm.period_us(50);
TeaPack_CZ 0:c54243e9db1d 7 _pwm.write(0.0);
TeaPack_CZ 0:c54243e9db1d 8 enabled = 0;
TeaPack_CZ 0:c54243e9db1d 9 }
TeaPack_CZ 0:c54243e9db1d 10
TeaPack_CZ 0:c54243e9db1d 11 void MotorDriver::setSpeed(float power_f)
TeaPack_CZ 0:c54243e9db1d 12 {
TeaPack_CZ 0:c54243e9db1d 13 bool dir;
TeaPack_CZ 0:c54243e9db1d 14 int speed = abs(power_f);
TeaPack_CZ 0:c54243e9db1d 15
TeaPack_CZ 0:c54243e9db1d 16 if(power_f < 0)
TeaPack_CZ 0:c54243e9db1d 17 dir = 1;
TeaPack_CZ 0:c54243e9db1d 18 else
TeaPack_CZ 0:c54243e9db1d 19 dir = 0;
TeaPack_CZ 0:c54243e9db1d 20
TeaPack_CZ 0:c54243e9db1d 21 setSpeed(dir,speed);
TeaPack_CZ 0:c54243e9db1d 22 }
TeaPack_CZ 0:c54243e9db1d 23
TeaPack_CZ 0:c54243e9db1d 24 void MotorDriver::setSpeed(bool dir, int power)
TeaPack_CZ 0:c54243e9db1d 25 {
TeaPack_CZ 0:c54243e9db1d 26 if(enabled)
TeaPack_CZ 0:c54243e9db1d 27 {
TeaPack_CZ 0:c54243e9db1d 28 _pwm.write(0.0);
TeaPack_CZ 0:c54243e9db1d 29 _dirA = 0;
TeaPack_CZ 0:c54243e9db1d 30 _dirB = 0;
TeaPack_CZ 0:c54243e9db1d 31 _dirA = dir;
TeaPack_CZ 0:c54243e9db1d 32 _dirB = !dir;
TeaPack_CZ 0:c54243e9db1d 33 _pwm.write(power/100.0);
TeaPack_CZ 0:c54243e9db1d 34 }
TeaPack_CZ 0:c54243e9db1d 35 }
TeaPack_CZ 0:c54243e9db1d 36
TeaPack_CZ 0:c54243e9db1d 37 void MotorDriver::setEnabled(bool newState)
TeaPack_CZ 0:c54243e9db1d 38 {
TeaPack_CZ 0:c54243e9db1d 39 enabled = newState;
TeaPack_CZ 0:c54243e9db1d 40 if(!enabled)
TeaPack_CZ 0:c54243e9db1d 41 stop();
TeaPack_CZ 0:c54243e9db1d 42 }
TeaPack_CZ 0:c54243e9db1d 43
TeaPack_CZ 0:c54243e9db1d 44 bool MotorDriver::isEnabled()
TeaPack_CZ 0:c54243e9db1d 45 {
TeaPack_CZ 0:c54243e9db1d 46 return enabled;
TeaPack_CZ 0:c54243e9db1d 47 }
TeaPack_CZ 0:c54243e9db1d 48
TeaPack_CZ 0:c54243e9db1d 49 void MotorDriver::stop()
TeaPack_CZ 0:c54243e9db1d 50 {
TeaPack_CZ 0:c54243e9db1d 51 _pwm.write(0.0);
TeaPack_CZ 0:c54243e9db1d 52 _dirA = 0;
TeaPack_CZ 0:c54243e9db1d 53 _dirB = 0;
TeaPack_CZ 0:c54243e9db1d 54 }
TeaPack_CZ 0:c54243e9db1d 55
TeaPack_CZ 0:c54243e9db1d 56 void MotorDriver::hold()
TeaPack_CZ 0:c54243e9db1d 57 {
TeaPack_CZ 0:c54243e9db1d 58 if(enabled)
TeaPack_CZ 0:c54243e9db1d 59 {
TeaPack_CZ 0:c54243e9db1d 60 _pwm.write(0.0);
TeaPack_CZ 0:c54243e9db1d 61 wait(0.001);
TeaPack_CZ 0:c54243e9db1d 62 _dirA = 1;
TeaPack_CZ 0:c54243e9db1d 63 _dirB = 1;
TeaPack_CZ 0:c54243e9db1d 64 }
TeaPack_CZ 0:c54243e9db1d 65 }