Simple motor controller library, using DIR, PWM, nSLP pin like pololu.
MotorControler.h
- Committer:
- sgrsn
- Date:
- 2021-02-02
- Branch:
- SM_LAP_Switchng
- Revision:
- 6:7955a025adee
- Parent:
- 5:b46d1e179eb7
- Child:
- 7:4454a344006a
File content as of revision 6:7955a025adee:
#ifndef MOTORCONTROLER_H #define MOTORCONTROLER_H #include "mbed.h" #define FLIP_MOTOR_DIR 0 typedef enum{ CW = 0, CCW = 1, }MotorDirection; typedef enum{ POLOLU = 0, TEXNITIS = 1, HOGE = 2, FUGA = 3, OTHER = 4, }DriverType; typedef enum{ SM = 0, LAP = 1, }ControlType; class MotorControler { public: MotorControler(PinName DIR, PinName PWM, PinName nSLP, DriverType md_type=POLOLU, ControlType control_type=SM); float operator = (float speed); float operator + (float speed); float operator += (float speed); float operator - (float speed); float operator -= (float speed); float operator * (float val); float operator *= (float val); float operator / (float val); float operator /= (float val); void enableDriver(); void disableDriver(); // speed(-1.0 - 1.0) void setSpeed(float speed); // dir(CW, or CCW) void setMotorDirection(MotorDirection dir); void setPinUsingSignMagnitude(int8_t dir, float speed); void setPinusingLockedUntiPhase(int8_t dir, float speed); // set PWM frequency // frequency[Hz] void setPwmFrequency(float frequency); private: PwmOut DIR_; PwmOut PWM_; DigitalOut nSLP_; uint8_t reverse_direction_; DriverType md_type_; ControlType control_type_; float current_speed_; }; #endif