str/ev3-api/library/libcpp-ev3/src/Motor.cpp (32 lines of code) (raw):
//
// Motor.cpp
//
// Copyright (c) 2015-2016 Embedded Technology Software Design Robot Contest
//
#include "Motor.h"
using namespace ev3api;
//=============================================================================
// Constructor
Motor::Motor(ePortM port, bool brake, motor_type_t type)
:mPort(static_cast<motor_port_t>(port)),
mBrake(brake),
mType(type),
mPWM(0),
mOffset(0)
{
ev3_motor_config(getPort(), type);
}
//=============================================================================
// Destructor
Motor::~Motor(void)
{
ev3_motor_stop(mPort, true); // set brake to stop the motor immidiately
}
//=============================================================================
// set motor PWM ratio: PWM_MAX to PWM_MIN
void Motor::setPWM(int pwm)
{
mPWM = (pwm>PWM_MAX)? PWM_MAX:((pwm<PWM_MIN)? PWM_MIN:pwm);
if (mBrake == true && pwm == 0)
{
ev3_motor_stop(mPort, true);
}
else
{
ev3_motor_set_power(mPort, mPWM);
}
}
//=============================================================================
// set brake (true:brake/false:float)
void Motor::setBrake(bool brake)
{
mBrake = brake;
setPWM(mPWM);
}