added gy80 dcm
Dependencies: mbed DCM_AHRS_GY80 PID MMA8451Q
Fork of quadCommand by
Diff: quadCommand/motor/motor.cpp
- Revision:
- 0:8681037b9a18
- Child:
- 38:9f33129afce2
diff -r 000000000000 -r 8681037b9a18 quadCommand/motor/motor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/quadCommand/motor/motor.cpp Sun Jun 09 22:13:59 2013 +0000 @@ -0,0 +1,74 @@ +/****************************** 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 ) : _pwm(pin) +{ + _pwm.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; + _pwm.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 getPulse( ) ***************************/ +/* Get the current pulse value. */ +/*************************************************************************/ + +float motor::getPulse( void ) +{ + return pulse; +} \ No newline at end of file