Motor.cpp

Committer:
inst
Date:
2015-11-29
Revision:
1:5a14412eb231
Parent:
0:479438556d43

File content as of revision 1:5a14412eb231:

#include "Motor.h"

const float Motor::mMinDuty = 0.3f;
const float Motor::mMaxDuty = 0.7f;

Motor::Motor( PinName p0, PinName p1, PinName p2, PinName p3 ){
    mActionType = RELEASE;
    mDuty       = mMinDuty;
    
    mPin0_PWM = new PwmOut( p0 );
    mPin1_D   = new DigitalOut( p1 );
    mPin2_D   = new DigitalOut( p2 );
    mPin3_PWM = new PwmOut( p3 );
    
    update();
}

void Motor::update(){
    switch ( mActionType ){
        case FORWARD:
            mPin0_PWM->write( 1.0f - mDuty );
            mPin1_D->write( 0 );
            mPin2_D->write( 1 );
            mPin3_PWM->write( 1.0f );
            break;
        
        case BACKWARD:
            mPin0_PWM->write( 1.0f );
            mPin1_D->write( 1 );
            mPin2_D->write( 0 );
            mPin3_PWM->write( 1.0f - mDuty );
            break;
            
        case BRAKE:
            mPin0_PWM->write( 0.0f);
            mPin1_D->write( 1 );
            mPin2_D->write( 1 );
            mPin3_PWM->write( 0.0f );
            break;
            
        case RELEASE:
            mPin0_PWM->write( 1.0f );
            mPin3_PWM->write( 1.0f );
            break;
    }
}