QEI PID Motor 合体

Dependents:   Nucleo_Motor Nucleo_Motor

fusion_Motor.h

Committer:
kikoaac
Date:
2015-09-23
Revision:
0:0d2b4508badd

File content as of revision 0:0d2b4508badd:


#include "mbed.h"
#include "Motor.h"
#include "PID.h"
#include "QEI.h"
#ifndef fusion_Motor_H
#define fusion_Motor_H

class fusion_Motor : public QEI ,public PID ,public Motor
{
    
    Ticker inter;
protected:
    fusion_Motor& operator=(const fusion_Motor &q) {
        
        return *this;
    }
public:
    fusion_Motor( QEI &p, PID &q,Motor &m) ;
    float interval;
    typedef enum Mode {
        Normal,
        Servo,
        Speed

    } Mode;
    float getrpm()
    {
        return RPM;
    }
    /*fusion_Motor() : PID(),QEI(),Motor()
    {
        printf("defoult con\r\n");
    }*/

    void setup(Mode _mode);
    void setmode(Mode _mode){mode=_mode;}
    void motor_run(float actionNum); 
    fusion_Motor& operator() (Mode _mode,bool f)
    {
        
        flag=f;
        setmode(_mode);
        pid_reset();
        return *this;
    }
    fusion_Motor& operator= (float actnum) 
    {
        motor_run(actnum);
        return *this;
    }
    void start(float target);
    void start();
    void write(float tar);
    
    
    
    void maxrpm(float rpm){Maxrpm = rpm;}
    void minrpm(float rpm){Minrpm = rpm;}
    float rpmper(float rpm);
    float rerpmper(float rpm);
    void Nomalrun(float duty){Motor::operator=(duty);}
    void Servorun(float angle){dTarget = angle;}
    void Speedrun(float rpm){dTarget = rpm;}
    
private:
    float RPM;
    bool flag;
    void InterruptAction();
    Mode mode;
    float Max,Min;
    float Maxrpm;
    float Minrpm;
};

#endif