Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ESC SR04 TSI
Diff: motor/motor.cpp
- Revision:
- 16:5f736b955d53
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/motor/motor.cpp Thu Jun 06 00:18:29 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