added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

quadCommand/motor/motor.cpp

Committer:
gabdo
Date:
2013-07-03
Revision:
59:9dfd9169a5e7
Parent:
57:c29f2dac3903
Child:
60:6906a96344a0

File content as of revision 59:9dfd9169a5e7:

/****************************** motor.cpp ********************************/
/* Version: 1.0                                                          */
/* Last Updated: June 1, 2013                                            */
/*                                                                       */
/* The motor class is used for motor control using a PWM ECS. When a     */
/*a motor object is created you must pass the PWM pin as the only        */
/*argument.                                                              */
/*************************************************************************/

#include "motor.h"

/************************** motor( PinName ) *****************************/
/* The motor constructor takes the pin to be used as for PWM and sets it */
/*to default safe valuse.                                                */
/*************************************************************************/

motor::motor( PinName pin ) 
{
    pwmPin = new PwmOut( pin );
    pwmPin->period( 0.020 );    // Set the period to 20ms.
    setPulseMin( 0.001150 );    // Set default min pulse.
    setPulseMax( 0.002 );       // Set default max pulse.
    setSpeed( 0 );              // Set motor to stopped.
}

/************************** setSpeed( int ) ******************************/
/* Set speed takes an int value between 0 and 100 and sets the speed of  */
/*the motor based on passed in percent value of speed.                   */
/*************************************************************************/

void motor::setSpeed( int value )
{
    // Is the value to small?
    if( value  < 0 )             // Yup, just set to 0.
        currentSpeed = 0;
    
    // Is the value to large?
    else if( value > 100 )      // Yup, just set to 100.
        currentSpeed = 100;
    
    // Value must be in the correct range.    
    else    
        currentSpeed = value;   // Set the new value.

    // Calculate the value based on pulseMin, pulseMax and currentSpeed.
    pulse = ((pulseMax - pulseMin) / 100 * currentSpeed) + pulseMin;
    pwmPin->pulsewidth( pulse );   // Write the pulse to the pin.
}

/************************** setPulseMin( float ) *************************/
/*                                                                       */
/*************************************************************************/

void motor::setPulseMin( float value )
{
    pulseMin = value;
}

/************************** setPulseMax( float ) *************************/
/*                                                                       */
/*************************************************************************/

void motor::setPulseMax( float value )
{
    pulseMax = value;
}

/*************************** float getSpeed( ) ***************************/
/*                                                                       */
/*************************************************************************/

int motor::getSpeed()
{
    return currentSpeed;
}