LED.c 1.98 KB
#include "includes.h"
#include "hardware.h"
#include "all_value.h"




/********************闪灯原则*************************/
/*

绿灯:
		1、手动模式 常亮;2、自动无任务时慢闪烁;3、自动有任务时快闪;
黄灯:
		1、电量过低报警 慢闪烁;2、远距离减速触发+近距离停止触发快闪;3、电机故障 常亮;
白灯:
		1、仅有激光位置 常亮;2、仅相机读码 慢闪烁;3、激光位置+有码 快闪;
		
组合:自动模式下通讯异常,3灯同时快速闪烁

*/
void Led_Pro(void)//三色灯输出+控制板系统指示灯
{		
		Flash(150);
	/**************绿灯****************/
		if( (Motor[2].MToPc.Home_Found==0)|(Motor[4].MToPc.Home_Found==0)){Out_LEDG=Flash2(1,30);} //舵轮原点丢失时闪烁1次	
		else if( (Workmode==ManuMode)&&(Motor[1].PcToM.PowerOn==0))	 {Out_LEDG=Flash2(2,45);} //手动模式无使能 闪烁2次
		else if( (Workmode==AutoMode)&&(Motor[1].PcToM.PowerOn==0))  {Out_LEDG=Flash2(4,45);} //自动模式取使能,闪烁4次
		else if(VaIndexB_R(&AGV.OtheSta,4))Out_LEDG=Out_Flash3;//忙碌,有任务
		else 
		{ if(Workmode==AutoMode )Out_LEDG=Out_Flash4; 
			else Out_LEDG=1;
		}
	
	/**************白灯****************/	
 		if ( (VaIndexW_R(&NodeOnLine,9)) && (VaIndexW_R(&NodeOnLine,8)) && (Status_SlamLaser==2) )//下视觉和SLAM都有信息
			Out_LEDW=Out_Flash3;	
		else if ( (VaIndexW_R(&NodeOnLine,8)) && (Status_SlamLaser==2) )
			Out_LEDW=1;
		else  if (VaIndexW_R(&NodeOnLine,9))//下视觉有信息
//			Out_LEDW=Flash2(3,40);
				Out_LEDW=Out_Flash4;	
		else Out_LEDW=0;
		
	/**************黄灯****************/
		if((LRadar_Near | LRadar_Middle)&& ((TLaRadarDelay_Time4Nums>10)|(AGV.Line_Step>12 && AGV.Line_Step<90)) )
			Out_LEDY=Out_Flash3;
 		else if(VaIndexB_R(&AGV.OtheSta,6)) Out_LEDY=Out_Flash4;
		else if( ErrEnd_sign[0]|ErrEnd_sign[1] )Out_LEDY=1;
		else  Out_LEDY=0;		
		
		
	/**************通讯故障****************/		
		if ( NOT(VaIndexW_R(&NodeOnLine,13)) &&(Workmode==AutoMode) )	Out_LEDG=Out_LEDW=Out_LEDY=Out_Flash3;	
		
		
	/**************主板灯****************/	
		if( VaIndexW_R(&NodeOnLine,13) )Out_SystemLed=!Out_Flash3;
		else Out_SystemLed=!Out_Flash4;
}