Library for Pololu Motor driver - VNH5019 Motor Driver Carrier https://www.pololu.com/product/1451
Dependents: VNH5019_2 VNH5019_1
MotorDriver.h@0:c54243e9db1d, 2017-02-25 (annotated)
- Committer:
- TeaPack_CZ
- Date:
- Sat Feb 25 21:54:26 2017 +0000
- Revision:
- 0:c54243e9db1d
- Child:
- 1:c1767d70d47e
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 | /** Class for the Pololu motor driver (VNH5019) |
TeaPack_CZ | 0:c54243e9db1d | 2 | * ANOTATION TODO ... \n\n |
TeaPack_CZ | 0:c54243e9db1d | 3 | * https://www.pololu.com/product/1451\n\n |
TeaPack_CZ | 0:c54243e9db1d | 4 | * |
TeaPack_CZ | 0:c54243e9db1d | 5 | * Writen by: Jan Crha (TeaPack_CZ), 2017. |
TeaPack_CZ | 0:c54243e9db1d | 6 | * |
TeaPack_CZ | 0:c54243e9db1d | 7 | * Last modified: 2017-02-25 |
TeaPack_CZ | 0:c54243e9db1d | 8 | * |
TeaPack_CZ | 0:c54243e9db1d | 9 | * Example (LPC1768): |
TeaPack_CZ | 0:c54243e9db1d | 10 | * @code |
TeaPack_CZ | 0:c54243e9db1d | 11 | * #include "mbed.h" |
TeaPack_CZ | 0:c54243e9db1d | 12 | * #include "MotorDriver.h" |
TeaPack_CZ | 0:c54243e9db1d | 13 | * #include "math.h" |
TeaPack_CZ | 0:c54243e9db1d | 14 | * |
TeaPack_CZ | 0:c54243e9db1d | 15 | * Serial PC(USBTX,USBRX); |
TeaPack_CZ | 0:c54243e9db1d | 16 | * |
TeaPack_CZ | 0:c54243e9db1d | 17 | * MotorDriver Motor(p20,p21,p22); |
TeaPack_CZ | 0:c54243e9db1d | 18 | * AnalogIn senseB(p19); |
TeaPack_CZ | 0:c54243e9db1d | 19 | * |
TeaPack_CZ | 0:c54243e9db1d | 20 | * int main(){ |
TeaPack_CZ | 0:c54243e9db1d | 21 | * |
TeaPack_CZ | 0:c54243e9db1d | 22 | * PC.baud(115200); |
TeaPack_CZ | 0:c54243e9db1d | 23 | * Motor.setEnabled(true); |
TeaPack_CZ | 0:c54243e9db1d | 24 | * int i = 0; |
TeaPack_CZ | 0:c54243e9db1d | 25 | * |
TeaPack_CZ | 0:c54243e9db1d | 26 | * while(1) |
TeaPack_CZ | 0:c54243e9db1d | 27 | * { |
TeaPack_CZ | 0:c54243e9db1d | 28 | * Motor.setSpeed(sin(i/180.0*3.1415)); |
TeaPack_CZ | 0:c54243e9db1d | 29 | * PC.printf("%.3f",senseB.read()); |
TeaPack_CZ | 0:c54243e9db1d | 30 | * wait(0.1); |
TeaPack_CZ | 0:c54243e9db1d | 31 | * } |
TeaPack_CZ | 0:c54243e9db1d | 32 | * } |
TeaPack_CZ | 0:c54243e9db1d | 33 | * @endcode |
TeaPack_CZ | 0:c54243e9db1d | 34 | */ |
TeaPack_CZ | 0:c54243e9db1d | 35 | |
TeaPack_CZ | 0:c54243e9db1d | 36 | #include "mbed.h" |
TeaPack_CZ | 0:c54243e9db1d | 37 | |
TeaPack_CZ | 0:c54243e9db1d | 38 | class MotorDriver{ |
TeaPack_CZ | 0:c54243e9db1d | 39 | |
TeaPack_CZ | 0:c54243e9db1d | 40 | public: |
TeaPack_CZ | 0:c54243e9db1d | 41 | |
TeaPack_CZ | 0:c54243e9db1d | 42 | /** Class contructor. |
TeaPack_CZ | 0:c54243e9db1d | 43 | \param PWM output connected to PWM pin on Pololu driver |
TeaPack_CZ | 0:c54243e9db1d | 44 | \param DirA connect to pin INA |
TeaPack_CZ | 0:c54243e9db1d | 45 | \param DirB connect to pin INB |
TeaPack_CZ | 0:c54243e9db1d | 46 | */ |
TeaPack_CZ | 0:c54243e9db1d | 47 | MotorDriver(PinName Pwm, PinName DirA, PinName DirB); |
TeaPack_CZ | 0:c54243e9db1d | 48 | |
TeaPack_CZ | 0:c54243e9db1d | 49 | /** Procedure for enabling/disabling motor driver |
TeaPack_CZ | 0:c54243e9db1d | 50 | */ |
TeaPack_CZ | 0:c54243e9db1d | 51 | void setEnabled(bool); |
TeaPack_CZ | 0:c54243e9db1d | 52 | |
TeaPack_CZ | 0:c54243e9db1d | 53 | /** Functon returning actual state of motor driver |
TeaPack_CZ | 0:c54243e9db1d | 54 | @returns True/False - state of motor driver |
TeaPack_CZ | 0:c54243e9db1d | 55 | */ |
TeaPack_CZ | 0:c54243e9db1d | 56 | bool isEnabled(); |
TeaPack_CZ | 0:c54243e9db1d | 57 | |
TeaPack_CZ | 0:c54243e9db1d | 58 | /** Procedure for stopping movement of motor |
TeaPack_CZ | 0:c54243e9db1d | 59 | */ |
TeaPack_CZ | 0:c54243e9db1d | 60 | void stop(); |
TeaPack_CZ | 0:c54243e9db1d | 61 | |
TeaPack_CZ | 0:c54243e9db1d | 62 | /** Procedure for stopping motor with active break |
TeaPack_CZ | 0:c54243e9db1d | 63 | */ |
TeaPack_CZ | 0:c54243e9db1d | 64 | void hold(); |
TeaPack_CZ | 0:c54243e9db1d | 65 | |
TeaPack_CZ | 0:c54243e9db1d | 66 | /** Procedure for setting direction and power |
TeaPack_CZ | 0:c54243e9db1d | 67 | \param direction |
TeaPack_CZ | 0:c54243e9db1d | 68 | \param power integer < 0 ; 100 > |
TeaPack_CZ | 0:c54243e9db1d | 69 | */ |
TeaPack_CZ | 0:c54243e9db1d | 70 | void setSpeed(bool, int); |
TeaPack_CZ | 0:c54243e9db1d | 71 | |
TeaPack_CZ | 0:c54243e9db1d | 72 | /** Procedure for setting power and direction via float |
TeaPack_CZ | 0:c54243e9db1d | 73 | \param power_f float < -1 ; +1 > |
TeaPack_CZ | 0:c54243e9db1d | 74 | */ |
TeaPack_CZ | 0:c54243e9db1d | 75 | void setSpeed(float); |
TeaPack_CZ | 0:c54243e9db1d | 76 | |
TeaPack_CZ | 0:c54243e9db1d | 77 | private: |
TeaPack_CZ | 0:c54243e9db1d | 78 | PwmOut _pwm; |
TeaPack_CZ | 0:c54243e9db1d | 79 | DigitalOut _dirA; |
TeaPack_CZ | 0:c54243e9db1d | 80 | DigitalOut _dirB; |
TeaPack_CZ | 0:c54243e9db1d | 81 | |
TeaPack_CZ | 0:c54243e9db1d | 82 | bool enabled; |
TeaPack_CZ | 0:c54243e9db1d | 83 | }; |