Files
Loongson_2k0300_SmartCar/src/MotorController.cpp
T

28 lines
813 B
C++

/*
* MotorController — 直流电机控制器实现
*/
#include "MotorController.h"
MotorController::MotorController(int pwmchip, int pwmnum, int gpioNum, unsigned int period_ns)
: pwmController(pwmchip, pwmnum), directionGPIO(gpioNum)
{
pwmController.setPeriod(period_ns);
pwmController.setDutyCycle(0); // 先归零再使能, 防止 sysfs 残留值导致电机瞬动
directionGPIO.setDirection("out");
pwmController.enable();
}
MotorController::~MotorController(void)
{
pwmController.disable();
}
void MotorController::updateduty(double dutyCycle)
{
int newduty = pwmController.readPeriod() * std::abs(dutyCycle) / 100.0;
if (newduty != pwmController.readDutyCycle())
pwmController.setDutyCycle(newduty);
directionGPIO.setValue(dutyCycle > 0);
}