added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

Committer:
gabdo
Date:
Wed Jul 03 04:45:03 2013 +0000
Revision:
59:9dfd9169a5e7
Parent:
57:c29f2dac3903
Child:
60:6906a96344a0
Working code, needs to be tuned.

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 56:a550127695b2 17 motor::motor( PinName pin )
gabdo 0:8681037b9a18 18 {
gabdo 56:a550127695b2 19 pwmPin = new PwmOut( pin );
gabdo 57:c29f2dac3903 20 pwmPin->period( 0.020 ); // Set the period to 20ms.
gabdo 0:8681037b9a18 21 setPulseMin( 0.001150 ); // Set default min pulse.
gabdo 0:8681037b9a18 22 setPulseMax( 0.002 ); // Set default max pulse.
gabdo 0:8681037b9a18 23 setSpeed( 0 ); // Set motor to stopped.
gabdo 0:8681037b9a18 24 }
gabdo 0:8681037b9a18 25
gabdo 0:8681037b9a18 26 /************************** setSpeed( int ) ******************************/
gabdo 0:8681037b9a18 27 /* Set speed takes an int value between 0 and 100 and sets the speed of */
gabdo 0:8681037b9a18 28 /*the motor based on passed in percent value of speed. */
gabdo 0:8681037b9a18 29 /*************************************************************************/
gabdo 0:8681037b9a18 30
gabdo 56:a550127695b2 31 void motor::setSpeed( int value )
gabdo 0:8681037b9a18 32 {
gabdo 0:8681037b9a18 33 // Is the value to small?
gabdo 59:9dfd9169a5e7 34 if( value < 0 ) // Yup, just set to 0.
gabdo 0:8681037b9a18 35 currentSpeed = 0;
gabdo 0:8681037b9a18 36
gabdo 0:8681037b9a18 37 // Is the value to large?
gabdo 59:9dfd9169a5e7 38 else if( value > 100 ) // Yup, just set to 100.
gabdo 0:8681037b9a18 39 currentSpeed = 100;
gabdo 0:8681037b9a18 40
gabdo 0:8681037b9a18 41 // Value must be in the correct range.
gabdo 0:8681037b9a18 42 else
gabdo 59:9dfd9169a5e7 43 currentSpeed = value; // Set the new value.
gabdo 0:8681037b9a18 44
gabdo 0:8681037b9a18 45 // Calculate the value based on pulseMin, pulseMax and currentSpeed.
gabdo 56:a550127695b2 46 pulse = ((pulseMax - pulseMin) / 100 * currentSpeed) + pulseMin;
gabdo 56:a550127695b2 47 pwmPin->pulsewidth( pulse ); // Write the pulse to the pin.
gabdo 0:8681037b9a18 48 }
gabdo 0:8681037b9a18 49
gabdo 0:8681037b9a18 50 /************************** setPulseMin( float ) *************************/
gabdo 0:8681037b9a18 51 /* */
gabdo 0:8681037b9a18 52 /*************************************************************************/
gabdo 0:8681037b9a18 53
gabdo 0:8681037b9a18 54 void motor::setPulseMin( float value )
gabdo 0:8681037b9a18 55 {
gabdo 0:8681037b9a18 56 pulseMin = value;
gabdo 0:8681037b9a18 57 }
gabdo 0:8681037b9a18 58
gabdo 0:8681037b9a18 59 /************************** setPulseMax( float ) *************************/
gabdo 0:8681037b9a18 60 /* */
gabdo 0:8681037b9a18 61 /*************************************************************************/
gabdo 0:8681037b9a18 62
gabdo 0:8681037b9a18 63 void motor::setPulseMax( float value )
gabdo 0:8681037b9a18 64 {
gabdo 0:8681037b9a18 65 pulseMax = value;
gabdo 0:8681037b9a18 66 }
gabdo 0:8681037b9a18 67
gabdo 38:9f33129afce2 68 /*************************** float getSpeed( ) ***************************/
gabdo 38:9f33129afce2 69 /* */
gabdo 38:9f33129afce2 70 /*************************************************************************/
gabdo 38:9f33129afce2 71
gabdo 56:a550127695b2 72 int motor::getSpeed()
gabdo 38:9f33129afce2 73 {
gabdo 38:9f33129afce2 74 return currentSpeed;
gabdo 0:8681037b9a18 75 }