一、理论
程序中需要修改的部分
1,先找到所有rc_loss的标记,赋值0,不要让他变成1。
2,找到CH_N[]赋值的地方,前4通道全部改成0,其他自己需要的值(比如改模式)。
3,调用一键起飞就行,其他标记不用改。
4,注意rc_loss置1的地方要屏蔽灯光标记和一键降落标记。
二、实操
1、注意
通过查找,发现需要更改的部分都在ANO_RC.C子程序中
2、标记
更改前
//在ANO_RC.C中的第248行
if(flag.unlock_sta)
{
if(switchs.gps_on ==0)
{
flag.auto_take_off_land = AUTO_LAND; //如果解锁,自动降落标记置位
}
else
{
flag.rc_loss_back_home = 1;
}
}
LED_STA.noRc = 1;
}
1、关于rc_loss的置1标记只找到了flag.rc_loss_back_home = 1; 所以尝试一下(不知道是不是),把1改为0
2、在置1的位置处,有灯光标记LED_STA.noRc = 1; 把它屏蔽掉
3、在置1的位置处,有一键降落标记flag.auto_take_off_land = AUTO_LAND; 也把它屏蔽掉
更改后
if(flag.unlock_sta)
{
if(switchs.gps_on ==0)
{
// flag.auto_take_off_land = AUTO_LAND; //如果解锁,自动降落标记置位
}
else
{
// flag.rc_loss_back_home = 0;
}
}
//LED_STA.noRc = 1;
}
3、CH_N[]赋值
更改前
//在ANO_RC.C中的第191行
void RC_duty_task(u8 dT_ms) //建议2ms调用一次
{
if(flag.start_ok)
{
/获得通道数据
for(u8 i=0;i<CH_NUM;i++)
{
CH_N[i] = rc_in.rc_ch.st_data.ch_[i]-1500;
CH_N[i] = LIMIT(CH_N[i],-500,500);//限制到+—500
}
1、第一处对CH_N[]赋值的地方,发现会影响前4位,所以改成 i 从4开始,然后在前面对前4位进行赋值0操作。
//在ANO_RC.C中的第230行
void fail_safe(void)
{
for(u8 i = 0;i<4;i++)
{
CH_N[i] = 0;
}
2、第二处对CH_N[]赋值的地方,发现它并不会影响前4位,因为就算影响也还是0,所以不做出改变。
更改后
void RC_duty_task(u8 dT_ms) //建议2ms调用一次
{
if(flag.start_ok)
{
CH_N[0] = 0;
CH_N[1] = 0;
CH_N[2] = 0;
CH_N[3] = 0;
/获得通道数据
for(u8 i=4;i<CH_NUM;i++)
{
CH_N[i] = rc_in.rc_ch.st_data.ch_[i]-1500;
CH_N[i] = LIMIT(CH_N[i],-500,500);//限制到+—500
}
结果
根据拓空者手册可以知道,指示灯由未连接上遥控的失控状态(红色呼吸),变成了正常运行的短闪+长间隔
此时可以通过命令包发送一键起飞和一键降落指令来验证成功。
三、注意
在确保你的程序能完整执行所有起降之前,最好别屏蔽遥控器,因为会导致你在你飞机失控的时候,用遥控器也救不回来