Beispiel #1
0
int setAngle(int angle, int pin) {
	if (angle > m_maxAngle || angle < 0) {
		return MRAA_ERROR_UNSPECIFIED;
	}

	if (pin == pin3) {
		mraa_pwm_enable(m_pwmServoContext, 1);
		mraa_pwm_period_us(m_pwmServoContext, m_period);
		mraa_pwm_pulsewidth_us(m_pwmServoContext, calcPulseTraveling(angle));
	}
	if (pin == pin9) {
		mraa_pwm_enable(m_pwmServoContext1, 1);
		mraa_pwm_period_us(m_pwmServoContext1, m_period);
		mraa_pwm_pulsewidth_us(m_pwmServoContext1, calcPulseTraveling(angle));
	}

	if (m_waitAndDisablePwm) {
		sleep(1); 
		haltPwm();
	}

	m_currAngle = angle;
	return MRAA_SUCCESS;
}
VexMotorController::~VexMotorController()
{
	haltPwm();
	mraa_pwm_close(m_pwmServoContext);
}