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

MotorControler.h

Committer:
sgrsn
Date:
2021-02-02
Revision:
5:b46d1e179eb7
Parent:
4:a60052db674c
Child:
6:7955a025adee

File content as of revision 5:b46d1e179eb7:

#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;

class MotorControler
{
    public:
    MotorControler(PinName DIR, PinName PWM, PinName nSLP, DriverType md_type=POLOLU);
    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);
    
    // set PWM frequency
    // frequency[Hz]
    void setPwmFrequency(float frequency);
    
    private:
    DigitalOut DIR_;
    PwmOut PWM_;
    DigitalOut nSLP_;
    uint8_t reverse_direction_;
    DriverType md_type_;
    float current_speed_;
};

#endif