Simple motor controller library, using DIR, PWM, nSLP pin like pololu.

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?

UserRevisionLine numberNew 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 }