|
我最近也在DIY 4轴,直接用arduino mega 2560代替飞控,再改造下遥控器。
关于输出PWM的地方,可以有更好的办法:
OUTTHR = map(INTHR,1010,2007,47,144); 这是个缩放函数,让1010-2007缩放为47-144
查Servo.cpp源码发现,Servo::write()函数是调用的writeMicroseconds()函数执行输出,将0-180角度值映射为PWM脉冲时间,如下:
[mw_shl_code=cpp,true]void Servo::write(int value)
{
if(value < MIN_PULSE_WIDTH)
{ // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds)
if(value < 0) value = 0;
if(value > 180) value = 180;
value = map(value, 0, 180, SERVO_MIN(), SERVO_MAX());
}
this->writeMicroseconds(value);
}[/mw_shl_code]
所以楼主不必再将PWM脉冲时间映射回角度,而是直接调用AIL.writeMicroseconds(INAIL)即可,直接将测得脉冲时间输出,既简单还避免了精度损失。 |
|