Library for Pololu Motor driver - VNH5019 Motor Driver Carrier https://www.pololu.com/product/1451
Dependents: VNH5019_2 VNH5019_1
MotorDriver.cpp@0:c54243e9db1d, 2017-02-25 (annotated)
- Committer:
- TeaPack_CZ
- Date:
- Sat Feb 25 21:54:26 2017 +0000
- Revision:
- 0:c54243e9db1d
Initial commit of library for motor driver VNH5019
Who changed what in which revision?
User | Revision | Line number | New 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 | } |