中级会员
- 积分
- 375
- 金钱
- 375
- 注册时间
- 2016-9-26
- 在线时间
- 59 小时
|
发表于 2016-12-12 14:17:40
|
显示全部楼层
这个是论坛里面分享出来的资料,大概能看懂怎么转换的吧。[mw_shl_code=c,true]/*
* 函数名:WFLY_PWM_Convert
* 描述 :遥控器信号转换
* 输入 :无
* 输出 :无
*/
void WFLY_PWM_Convert(void)
{
static u16 cnt;
cnt++;
Exp_Angle.X = (float)(Rc_Channel_Val[2]- 1500) * 0.07f;
if((Exp_Angle.X > -2) && (Exp_Angle.X < 2)) Exp_Angle.X = 0;
Exp_Angle.Y = (float)(Rc_Channel_Val[3]- 1500) * 0.07f;
if((Exp_Angle.Y > -2) && (Exp_Angle.Y < 2)) Exp_Angle.Y = 0;
throttle = (vs16)(Rc_Channel_Val[1] - 1000) * 2;
if(cnt == 20)
{
cnt = 0;
if((Rc_Channel_Val[0] > 1600) || (Rc_Channel_Val[0] < 1400))//防止死区累计误差
{
if(throttle > LAUNCH_THROTTLE) Exp_Angle.Z += -(float)(Rc_Channel_Val[0]- 1500) * 0.006f;
}
if((Exp_Angle.Z > 180) && (Angle.Z > 0))
{
angle_z = Angle.Z - 360;
}
else if((Exp_Angle.Z < -180) && (Angle.Z < 0))
{
angle_z = Angle.Z + 360;
}
else angle_z = Angle.Z;
if(Exp_Angle.Z > 360) Exp_Angle.Z = (float)((s32)Exp_Angle.Z % 360);
if(Exp_Angle.Z < -360) Exp_Angle.Z = (float)((s32)Exp_Angle.Z % - 360);
}
}
[/mw_shl_code]
|
|