Motor

Fork of Motor by Reiko Randoja

motor.h

Committer:
Reiko
Date:
2013-09-16
Revision:
5:99fa6dffea40
Parent:
3:94db629c0a83
Child:
6:37199f371bf8

File content as of revision 5:99fa6dffea40:

#ifndef MOTOR_H
#define MOTOR_H

#include "mbed.h"
#include "PCA9555.h"
#include "qed.h"
 
class Motor {
protected:
    FunctionPointer stallWarningCallback;
    FunctionPointer stallErrorCallback;
public:
    Motor(PinName PWMpin, PCA9555 *ioExt, unsigned int dir1Pin, unsigned int dir2Pin, PinName encA, PinName encB);
 
    void setPWM(int newPWM);
    void setSpeed(int newSpeed);
    int getSpeed();
    void pid();
    
    void stallWarning(void (*function)(void));
    
    template<typename T>
    void stallWarning(T *object, void (T::*member)(void)) { 
        stallWarningCallback.attach(object, member); 
    }
    
    void stallError(void (*function)(void));
    
    template<typename T>
    void stallError(T *object, void (T::*member)(void)) { 
        stallErrorCallback.attach(object, member); 
    }
 
private:
    PwmOut pwm;
    PCA9555 *extIO;
    unsigned int dir1;
    unsigned int dir2;
    QED qed;
    
    int currentSpeed;
    int getDecoderCount();
    
    void resetPID();
    
    int setPoint;
    int pMulti;
    int iDiv;
    int dMulti;
    int error;
    int prevError;
    int P;
    int I;
    int D;
    int minPwm;
    int pidMulti;
    int iMax;
    
    int currentPWM;
    int stallCounter;
    int stallCounterLimit;
};

#endif