added gy80 dcm
Dependencies: mbed DCM_AHRS_GY80 PID MMA8451Q
Fork of quadCommand by
quadCommand/motor/motor.cpp@0:8681037b9a18, 2013-06-09 (annotated)
- Committer:
- gabdo
- Date:
- Sun Jun 09 22:13:59 2013 +0000
- Revision:
- 0:8681037b9a18
- Child:
- 38:9f33129afce2
quadCommand!
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:8681037b9a18 | 30 | void motor::setSpeed( int value ) |
gabdo | 0:8681037b9a18 | 31 | { |
gabdo | 0:8681037b9a18 | 32 | // Is the value to small? |
gabdo | 0:8681037b9a18 | 33 | if( value < 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 | 0:8681037b9a18 | 37 | else if( value > 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 | 0:8681037b9a18 | 42 | currentSpeed = value; // 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 | 0:8681037b9a18 | 74 | } |