|
|
|
@ -150,7 +150,89 @@ void AutoBackSpray_On() |
|
|
|
} |
|
|
|
//--
|
|
|
|
//--车体停
|
|
|
|
void Off_AutoSpray() |
|
|
|
void Off_AutoSpray(MoveSTATE_t MoveState) |
|
|
|
{ |
|
|
|
//喷漆自动关闭
|
|
|
|
if(AutoSpray_Flag == 1) |
|
|
|
{ |
|
|
|
|
|
|
|
GF_BSP_GPIO_SetIO(Out_Spray,1); |
|
|
|
AutoSpray_Stop_Count++; |
|
|
|
} |
|
|
|
//喷漆程序结束
|
|
|
|
|
|
|
|
//若自动喷漆启动,计数AutoSpray_Stop_Count*2ms后再停车
|
|
|
|
if(AutoSpray_Flag == 1) |
|
|
|
{ |
|
|
|
if(AutoSpray_Stop_Count <= 250) |
|
|
|
{ |
|
|
|
AutoSpray_Flag = 0; |
|
|
|
AutoSpray_Stop_Count = 0; |
|
|
|
CurrentMoveState = Move_HALT; //停车
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_HALT; //停车
|
|
|
|
} |
|
|
|
|
|
|
|
//停车,禁止其它置位
|
|
|
|
if(Current_T_F4_Value.AutoForWard == 1 |
|
|
|
|| Current_T_F4_Value.AutoBackWard == 1) |
|
|
|
{ |
|
|
|
GV.AuTo_Flag = 99; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
GV.AuTo_Flag = 0; |
|
|
|
} |
|
|
|
|
|
|
|
if(Current_T_F4_Value.ChgDown_Ver == 1 || Current_T_F4_Value.ChgUp_Ver == 1 |
|
|
|
|| Current_T_F4_Value.ChgLeft_Hor == 1 || Current_T_F4_Value.ChgRight_Hor == 1) |
|
|
|
{ |
|
|
|
GV.Chg_Flag = 1; |
|
|
|
Chg_Pa.change_road_finish_flag = 1; |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
GV.Chg_Flag = 0; |
|
|
|
Chg_Pa.change_road_finish_flag = 0; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
void Off_Emergency(MoveSTATE_t MoveState) |
|
|
|
{ |
|
|
|
GF_BSP_GPIO_SetIO(Out_Spray,1); |
|
|
|
AutoSpray_Flag = 0; |
|
|
|
CurrentMoveState = Move_HALT; //停车
|
|
|
|
//停车,禁止其它置位
|
|
|
|
if(Current_T_F4_Value.AutoForWard == 1 |
|
|
|
|| Current_T_F4_Value.AutoBackWard == 1) |
|
|
|
{ |
|
|
|
GV.AuTo_Flag = 99; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
GV.AuTo_Flag = 0; |
|
|
|
} |
|
|
|
|
|
|
|
if(Current_T_F4_Value.ChgDown_Ver == 1 || Current_T_F4_Value.ChgUp_Ver == 1 |
|
|
|
|| Current_T_F4_Value.ChgLeft_Hor == 1 || Current_T_F4_Value.ChgRight_Hor == 1) |
|
|
|
{ |
|
|
|
GV.Chg_Flag = 1; |
|
|
|
Chg_Pa.change_road_finish_flag = 1; |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
GV.Chg_Flag = 0; |
|
|
|
Chg_Pa.change_road_finish_flag = 0; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
void Off_ESpray() |
|
|
|
{ |
|
|
|
//喷漆自动关闭
|
|
|
|
if(AutoSpray_Flag == 1) |
|
|
|
@ -201,10 +283,17 @@ void Off_AutoSpray() |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
//--
|
|
|
|
|
|
|
|
//--
|
|
|
|
//--探边检测
|
|
|
|
void Dangerous_Test() |
|
|
|
{ |
|
|
|
if(Current_T_F4_Value.AutoForWard == 0 |
|
|
|
&& Current_T_F4_Value.AutoBackWard == 0) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
//计数,置位标志
|
|
|
|
//前进探边计数
|
|
|
|
if(GV.Robot_Ultrasonic.USValue_1 >= 5000 || GV.Robot_Ultrasonic.USValue_1 == 0) |
|
|
|
@ -374,32 +463,28 @@ void Dangerous_Flag_Delete() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//--遥控器急停判断
|
|
|
|
void RC_Emergency() |
|
|
|
|
|
|
|
//运动部分 Move Region
|
|
|
|
void Robot_Move() |
|
|
|
{ |
|
|
|
//--遥控器急停判断
|
|
|
|
if(Current_T_F4_Value.emergency_stop == 1) |
|
|
|
{ |
|
|
|
GV.AuTo_Flag = 0; |
|
|
|
GV.Chg_Flag = 0; |
|
|
|
Chg_Pa.change_road_finish_flag = 0; |
|
|
|
|
|
|
|
GF_BSP_GPIO_SetIO(Out_Spray,1); |
|
|
|
GF_BSP_GPIO_SetIO(0,1); |
|
|
|
CurrentMoveState = Move_Emergency; |
|
|
|
Off_Emergency(Move_Emergency); |
|
|
|
return; |
|
|
|
} |
|
|
|
else if(Current_T_F4_Value.robot_Heart_Error == 1) |
|
|
|
{ |
|
|
|
GF_BSP_GPIO_SetIO(0,1); |
|
|
|
Off_Emergency(Move_Emergency); |
|
|
|
return; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
GF_BSP_GPIO_SetIO(0,0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//运动部分 Move Region
|
|
|
|
void Robot_Move() |
|
|
|
{ |
|
|
|
if(Current_T_F4_Value.emergency_stop == 1) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
if((Current_T_F4_Value.ChgDown_Ver == 1 || Current_T_F4_Value.ChgUp_Ver == 1 |
|
|
|
|| Current_T_F4_Value.ChgLeft_Hor == 1 || Current_T_F4_Value.ChgRight_Hor == 1 |
|
|
|
|| Current_T_F4_Value.AutoForWard == 1 || Current_T_F4_Value.AutoBackWard == 1) |
|
|
|
@ -493,29 +578,21 @@ void Robot_Move() |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Off_AutoSpray(); |
|
|
|
Off_AutoSpray(Move_HALT); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void GF_Dispatch()//2ms调用一次 给车体速度等赋值
|
|
|
|
{ |
|
|
|
//--遥控器急停判断
|
|
|
|
RC_Emergency(); |
|
|
|
//--自动作业模式下的探边检测判断
|
|
|
|
if(Current_T_F4_Value.AutoForWard == 1 |
|
|
|
|| Current_T_F4_Value.AutoBackWard == 1) |
|
|
|
{ |
|
|
|
Dangerous_Test(); |
|
|
|
} |
|
|
|
|
|
|
|
//--气压判断
|
|
|
|
Dym_Test(); |
|
|
|
|
|
|
|
//--自动作业模式下的探边检测判断
|
|
|
|
Dangerous_Test(); |
|
|
|
//--探边置位消除
|
|
|
|
Dangerous_Flag_Delete(); |
|
|
|
|
|
|
|
Robot_Move(); |
|
|
|
|
|
|
|
//--探边置位消除
|
|
|
|
Dangerous_Flag_Delete(); |
|
|
|
//--
|
|
|
|
|
|
|
|
/****************************************/ |
|
|
|
|