added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

Committer:
gabdo
Date:
Thu Jun 13 01:11:03 2013 +0000
Revision:
55:bca9c9e92da6
Parent:
45:088885f4a13d
Child:
56:a550127695b2
Good job!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabdo 0:8681037b9a18 1 /****************************** motor.cpp ********************************/
gabdo 0:8681037b9a18 2 /* Version: 1.0 */
gabdo 0:8681037b9a18 3 /* Last Updated: June 1, 2013 */
gabdo 0:8681037b9a18 4 /* */
gabdo 0:8681037b9a18 5 /* The motor class is used for motor control using a PWM ECS. When a */
gabdo 0:8681037b9a18 6 /*a motor object is created you must pass the PWM pin as the only */
gabdo 0:8681037b9a18 7 /*argument. */
gabdo 0:8681037b9a18 8 /*************************************************************************/
gabdo 0:8681037b9a18 9
gabdo 0:8681037b9a18 10 #include "motor.h"
gabdo 0:8681037b9a18 11
gabdo 0:8681037b9a18 12 /************************** motor( PinName ) *****************************/
gabdo 0:8681037b9a18 13 /* The motor constructor takes the pin to be used as for PWM and sets it */
gabdo 0:8681037b9a18 14 /*to default safe valuse. */
gabdo 0:8681037b9a18 15 /*************************************************************************/
gabdo 0:8681037b9a18 16
gabdo 0:8681037b9a18 17 motor::motor( PinName pin ) : _pwm(pin)
gabdo 0:8681037b9a18 18 {
gabdo 0:8681037b9a18 19 _pwm.period( 0.020 ); // Set the period to 20ms.
gabdo 0:8681037b9a18 20 setPulseMin( 0.001150 ); // Set default min pulse.
gabdo 0:8681037b9a18 21 setPulseMax( 0.002 ); // Set default max pulse.
gabdo 0:8681037b9a18 22 setSpeed( 0 ); // Set motor to stopped.
gabdo 0:8681037b9a18 23 }
gabdo 0:8681037b9a18 24
gabdo 0:8681037b9a18 25 /************************** setSpeed( int ) ******************************/
gabdo 0:8681037b9a18 26 /* Set speed takes an int value between 0 and 100 and sets the speed of */
gabdo 0:8681037b9a18 27 /*the motor based on passed in percent value of speed. */
gabdo 0:8681037b9a18 28 /*************************************************************************/
gabdo 0:8681037b9a18 29
gabdo 45:088885f4a13d 30 void motor::setSpeed( float value )
gabdo 0:8681037b9a18 31 {
gabdo 0:8681037b9a18 32 // Is the value to small?
gabdo 55:bca9c9e92da6 33 if( value - trim < 0 ) // Yup, just set to 0.
gabdo 0:8681037b9a18 34 currentSpeed = 0;
gabdo 0:8681037b9a18 35
gabdo 0:8681037b9a18 36 // Is the value to large?
gabdo 55:bca9c9e92da6 37 else if( value + trim > 100 ) // Yup, just set to 100.
gabdo 0:8681037b9a18 38 currentSpeed = 100;
gabdo 0:8681037b9a18 39
gabdo 0:8681037b9a18 40 // Value must be in the correct range.
gabdo 0:8681037b9a18 41 else
gabdo 55:bca9c9e92da6 42 currentSpeed = value + trim; // Set the new value.
gabdo 0:8681037b9a18 43
gabdo 0:8681037b9a18 44 // Calculate the value based on pulseMin, pulseMax and currentSpeed.
gabdo 0:8681037b9a18 45 pulse = ((pulseMax - pulseMin ) / 100 * currentSpeed ) + pulseMin;
gabdo 0:8681037b9a18 46 _pwm.pulsewidth( pulse ); // Write the pulse to the pin.
gabdo 0:8681037b9a18 47 }
gabdo 0:8681037b9a18 48
gabdo 0:8681037b9a18 49 /************************** setPulseMin( float ) *************************/
gabdo 0:8681037b9a18 50 /* */
gabdo 0:8681037b9a18 51 /*************************************************************************/
gabdo 0:8681037b9a18 52
gabdo 0:8681037b9a18 53 void motor::setPulseMin( float value )
gabdo 0:8681037b9a18 54 {
gabdo 0:8681037b9a18 55 pulseMin = value;
gabdo 0:8681037b9a18 56 }
gabdo 0:8681037b9a18 57
gabdo 0:8681037b9a18 58 /************************** setPulseMax( float ) *************************/
gabdo 0:8681037b9a18 59 /* */
gabdo 0:8681037b9a18 60 /*************************************************************************/
gabdo 0:8681037b9a18 61
gabdo 0:8681037b9a18 62 void motor::setPulseMax( float value )
gabdo 0:8681037b9a18 63 {
gabdo 0:8681037b9a18 64 pulseMax = value;
gabdo 0:8681037b9a18 65 }
gabdo 0:8681037b9a18 66
gabdo 0:8681037b9a18 67 /*************************** float getPulse( ) ***************************/
gabdo 0:8681037b9a18 68 /* Get the current pulse value. */
gabdo 0:8681037b9a18 69 /*************************************************************************/
gabdo 0:8681037b9a18 70
gabdo 0:8681037b9a18 71 float motor::getPulse( void )
gabdo 0:8681037b9a18 72 {
gabdo 0:8681037b9a18 73 return pulse;
gabdo 38:9f33129afce2 74 }
gabdo 38:9f33129afce2 75
gabdo 38:9f33129afce2 76 /*************************** float getSpeed( ) ***************************/
gabdo 38:9f33129afce2 77 /* */
gabdo 38:9f33129afce2 78 /*************************************************************************/
gabdo 38:9f33129afce2 79
gabdo 45:088885f4a13d 80 float motor::getSpeed()
gabdo 38:9f33129afce2 81 {
gabdo 38:9f33129afce2 82 return currentSpeed;
gabdo 0:8681037b9a18 83 }