Files
amadeus_26/docs/Transmit/ctrl_command.md
2026-03-22 19:42:38 +08:00

1.4 KiB
Raw Blame History

控制指令的发送说明

在主机外接收的控制板中的控制代码的实现是:

// CAN 速率 1000kbps
void CToC_CANDataProcess(unit32_t ID, uint8_t *Data)
{
    // 以下所有变量有效范围为 [-660,660]
    if(ID == 0x149) // 运动控制
    {
        
        Remote_RxData.Remote_R_RL =(int16_t)((uint16_t)Data[0]<<8 | Data[1]); // 平动 X 轴(左右)
        Remote_RxData.Remote_R_UD =(int16_t)((uint16_t)Data[2]<<8 | Data[3]); // 平动 Y 轴(前后)
        Remote_RxData.Remote_L_RL =(int16_t)((uint16_t)Data[4]<<8 | Data[5]); // 云台偏航 (左右)
        Remote_RxData.Remote_L_UD =(int16_t)((uint16_t)Data[6]<<8 | Data[7]); // 云台俯仰 (上下)
    }
    else if(ID == 0x189) // 攻击控制
    {
        Remote_RxData.Remote_ThumbWheel =(int16_t)((uint16_t)Data[0]<<8 | Data[1]); // 拨弹盘(进弹/退弹660 为进弹0 为关闭,-660 为退弹
        Remote_RxData.Remote_RS =(int16_t)((uint16_t)Data[2]<<8 | Data[3]); // 小陀螺(反自瞄)开关,置 660 为开启0 为关闭
        Remote_RxData.Remote_LS =(int16_t)((uint16_t)Data[4]<<8 | Data[5]); // 摩擦轮开关, 置 660 为开启0 为关闭
    }
}

两个 ID 分别是云台和底盘的控制板,在处于进点/回家状态时不应开启小陀螺,发射弹丸需要打开摩擦轮 同时 进弹,因此只有在处于攻击状态时开启摩擦轮,此时可以将进弹视为扳机。