Derek McLean / Mbed 2 deprecated uwb-quadcopter

Dependencies:   mbed ESC SR04 TSI

Committer:
gabdo
Date:
Sun Jun 09 02:41:27 2013 +0000
Revision:
32:d2b973c8d196
Updated June 8 2013

Who changed what in which revision?

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