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
motor/motor.cpp
- Committer:
- dereklmc
- Date:
- 2013-06-09
- Revision:
- 30:17297295ce0c
- Parent:
- 16:5f736b955d53
File content as of revision 30:17297295ce0c:
/****************************** 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;
}
