Simple motor controller library, using DIR, PWM, nSLP pin like pololu.
MotorControler.cpp@0:e3207dd7809a, 2020-03-04 (annotated)
- Committer:
- sgrsn
- Date:
- Wed Mar 04 03:53:06 2020 +0000
- Revision:
- 0:e3207dd7809a
- Child:
- 1:ed3dfe4ecc8a
First Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sgrsn | 0:e3207dd7809a | 1 | #include "MotorControler.h" |
sgrsn | 0:e3207dd7809a | 2 | |
sgrsn | 0:e3207dd7809a | 3 | MotorControler::MotorControler(PinName DIR, PinName PWM, PinName SLP) : _DIR(DIR), _PWM(PWM), _nSLP(SLP) |
sgrsn | 0:e3207dd7809a | 4 | { |
sgrsn | 0:e3207dd7809a | 5 | _nSLP = 0; |
sgrsn | 0:e3207dd7809a | 6 | } |
sgrsn | 0:e3207dd7809a | 7 | |
sgrsn | 0:e3207dd7809a | 8 | void MotorControler::enableDriver() |
sgrsn | 0:e3207dd7809a | 9 | { |
sgrsn | 0:e3207dd7809a | 10 | _nSLP = 1; |
sgrsn | 0:e3207dd7809a | 11 | } |
sgrsn | 0:e3207dd7809a | 12 | |
sgrsn | 0:e3207dd7809a | 13 | void MotorControler::disableDriver() |
sgrsn | 0:e3207dd7809a | 14 | { |
sgrsn | 0:e3207dd7809a | 15 | _nSLP = 0; |
sgrsn | 0:e3207dd7809a | 16 | } |
sgrsn | 0:e3207dd7809a | 17 | |
sgrsn | 0:e3207dd7809a | 18 | void MotorControler::setSpeed(float speed) |
sgrsn | 0:e3207dd7809a | 19 | { |
sgrsn | 0:e3207dd7809a | 20 | uint8_t reverse = 0; |
sgrsn | 0:e3207dd7809a | 21 | if (speed < 0) |
sgrsn | 0:e3207dd7809a | 22 | { |
sgrsn | 0:e3207dd7809a | 23 | speed = -speed; // Make speed a positive quantity |
sgrsn | 0:e3207dd7809a | 24 | reverse = 1; // Preserve the direction |
sgrsn | 0:e3207dd7809a | 25 | } |
sgrsn | 0:e3207dd7809a | 26 | // 最大デューティ比で制限 |
sgrsn | 0:e3207dd7809a | 27 | if (speed > 1) |
sgrsn | 0:e3207dd7809a | 28 | speed = 1; |
sgrsn | 0:e3207dd7809a | 29 | |
sgrsn | 0:e3207dd7809a | 30 | _PWM = speed; |
sgrsn | 0:e3207dd7809a | 31 | if (reverse ^ FLIP_MOTOR_DIR) |
sgrsn | 0:e3207dd7809a | 32 | { |
sgrsn | 0:e3207dd7809a | 33 | _DIR = 1; |
sgrsn | 0:e3207dd7809a | 34 | } |
sgrsn | 0:e3207dd7809a | 35 | else |
sgrsn | 0:e3207dd7809a | 36 | { |
sgrsn | 0:e3207dd7809a | 37 | _DIR = 0; |
sgrsn | 0:e3207dd7809a | 38 | } |
sgrsn | 0:e3207dd7809a | 39 | } |