⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 本文件用于智能云台电机控制和图像处理
💻 C
📖 第 1 页 / 共 3 页
字号:
		//	else	if(hPresetPosition==hAbsolutionPosition)  TR2=0;
			else 
			{
				if((hAbsolutionPosition-hPresetPosition)<2000)
					hOrientFlag=-1;
				else 
					hOrientFlag=1;
			}
		}
		//
		switch(hOrientFlag)
		{
		default:break;
	
		case 1:
			{
				switch(haccDecFlag)
				{
				default :break;
				case PAUSE:
				if(!(hPauseTime--))
				  {
				  haccDecFlag=ACCELERATION;
				  if(hAbsolutionPosition==hPresetPosition1)
							hPresetPosition=hPresetPosition2;
						else
							hPresetPosition=hPresetPosition1;
								hOrientFlag=0;
								}
 				break;
				case DECELERATION:
					if(currentCount==15)
						currentCount=0;
					else
						++currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==3999)
						hAbsolutionPosition=0;
					else
						++hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=DECTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=PAUSE;
						hPauseTime=200;
						HMotorOut(SIN16[currentCount]) ;
						
					}
					else
					{
						RCAPT2=DECTABLE[accDecCount];
						++accDecCount;				
					}
					
					//	HMotorOut(SIN16[currentCount-1]) ;				
					break;
				case ACCELERATION:
					if(currentCount==15)
						currentCount=0;
					else
						++currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==3999)
						hAbsolutionPosition=0;
					else
						++hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=ACCTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=NORMALMOTION;
						hPresetPosition=hPresetPosition-16;
					}
					else
					{
						RCAPT2=ACCTABLE[accDecCount];
						++accDecCount;
					}				
					break;
				case NORMALMOTION:
					if(hPresetPosition!=hAbsolutionPosition)
					{
						if(currentCount==15)
							currentCount=0;
						else
							++currentCount;
						HMotorOut(SIN16[currentCount]) ;
						if(hAbsolutionPosition==3999)
							hAbsolutionPosition=0;
						else
							++hAbsolutionPosition;
						RCAPT2=-2000;
						//	RCAPT2=ACCDEC[accDecCount];
					}
					else
						haccDecFlag=DECELERATION;
					break;
					
				} 			
				break;
			}
		case -1:
			{
				switch(haccDecFlag)
				{
				default :break;
				case PAUSE:
				if(!(hPauseTime--))
				  {
				  haccDecFlag=ACCELERATION;
				  if(hAbsolutionPosition==hPresetPosition1)
							hPresetPosition=hPresetPosition2;
						else
							hPresetPosition=hPresetPosition1;
								hOrientFlag=0;
								}
 				break;
				case DECELERATION:
					if(currentCount==0)
						currentCount=15;
					else
						--currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==0)
						hAbsolutionPosition=3999;
					else
						--hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=DECTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=PAUSE;
						hPauseTime=200;
						HMotorOut(SIN16[currentCount]) ;
						
					}
					else
					{
						++accDecCount;
						RCAPT2=DECTABLE[accDecCount];
					}
					
					//	HMotorOut(SIN16[currentCount+1]) ;
					break;
				case ACCELERATION:
					if(currentCount==0)
						currentCount=15;
					else
						--currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==0)
						hAbsolutionPosition=3999;
					else
						--hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=ACCTABLE[accDecCount];
						accDecCount=0;
						hPresetPosition=hPresetPosition+16;
						haccDecFlag=NORMALMOTION;
					}
					else
					{
						RCAPT2=ACCTABLE[accDecCount];
						++accDecCount; 				
					}
					
					break;
				case NORMALMOTION:
					if(hPresetPosition!=hAbsolutionPosition)
					{
						if(currentCount==0)
							currentCount=15;
						else
							--currentCount;
						HMotorOut(SIN16[currentCount]) ;
						if(hAbsolutionPosition==0)
							hAbsolutionPosition=3999;
						else
							--hAbsolutionPosition;
						RCAPT2=-2000;
						//	RCAPT2=ACCDEC[accDecCount];
					}
					else
						haccDecFlag=DECELERATION;
					break;
					
				} 			
				break;
			}
		   }
		   
		   break;
	case MULMOTION  :
		if(!hOrientFlag)
		{
			if(hPresetPosition>hAbsolutionPosition)
			{
				if((hPresetPosition-hAbsolutionPosition)<2000)
					hOrientFlag=1;
				else 
					hOrientFlag=-1;
			}
		//	else	if(hPresetPosition==hAbsolutionPosition)  TR2=0;
			else 
			{
				if((hAbsolutionPosition-hPresetPosition)<2000)
					hOrientFlag=-1;
				else 
					hOrientFlag=1;
			}
		}
		//
		switch(hOrientFlag)
		{
		default:break;
	
		case 1:
			{
				switch(haccDecFlag)
				{
				default :break;
				case PAUSE:
				if(!(hPauseTime--))
				  {
				  haccDecFlag=ACCELERATION;
				   hOrientFlag=0;
				   if( (hMulPointCount>=0)&&(hMulPointCount<=3))
					{
					hPresetPosition=HMulPoint[hMulPointCount];
					 hMulPointCount++;
					 }
					 else	if( (hMulPointCount>=4)&&(hMulPointCount<=6))
							 {
					       	   hPresetPosition=HMulPoint[8-hMulPointCount];
					  			hMulPointCount++;
								 }
							  else 
							  {
							   hPresetPosition=HMulPoint[8-hMulPointCount];
					  			hMulPointCount=0;
							  }
				   
				  
				  }
 				break;
				case DECELERATION:
					if(currentCount==15)
						currentCount=0;
					else
						++currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==3999)
						hAbsolutionPosition=0;
					else
						++hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=DECTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=PAUSE;
						hPauseTime=50;
						HMotorOut(SIN16[currentCount]) ;
						
					}
					else
					{
						RCAPT2=DECTABLE[accDecCount];
						++accDecCount;				
					}
					
					//	HMotorOut(SIN16[currentCount-1]) ;				
					break;
				case ACCELERATION:
					if(currentCount==15)
						currentCount=0;
					else
						++currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==3999)
						hAbsolutionPosition=0;
					else
						++hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=ACCTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=NORMALMOTION;
						hPresetPosition=hPresetPosition-16;
					}
					else
					{
						RCAPT2=ACCTABLE[accDecCount];
						++accDecCount;
					}				
					break;
				case NORMALMOTION:
					if(hPresetPosition!=hAbsolutionPosition)
					{
						if(currentCount==15)
							currentCount=0;
						else
							++currentCount;
						HMotorOut(SIN16[currentCount]) ;
						if(hAbsolutionPosition==3999)
							hAbsolutionPosition=0;
						else
							++hAbsolutionPosition;
						RCAPT2=-200;
						//	RCAPT2=ACCDEC[accDecCount];
					}
					else
						haccDecFlag=DECELERATION;
					break;
					
				} 			
				break;
			}
		case -1:
			 {
				switch(haccDecFlag)
				{
				default :break;
				case PAUSE:
				if(!(hPauseTime--))
				  {
				  haccDecFlag=ACCELERATION;
				  hOrientFlag=0;
				  if( (hMulPointCount>=0)&&(hMulPointCount<=3))
					{
					hPresetPosition=HMulPoint[hMulPointCount];
					 hMulPointCount++;
					 }
					 else	if( (hMulPointCount>=4)&&(hMulPointCount<=6))
							 {
					       	   hPresetPosition=HMulPoint[8-hMulPointCount];
					  			hMulPointCount++;
								 }
							  else 
							  {
							   hPresetPosition=HMulPoint[8-hMulPointCount];
					  			hMulPointCount=0;
							  }

				  }
				break;				
				
 				
				case DECELERATION:
					if(currentCount==0)
						currentCount=15;
					else
						--currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==0)
						hAbsolutionPosition=3999;
					else
						--hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=DECTABLE[accDecCount];
						accDecCount=0;
						haccDecFlag=PAUSE;
						hPauseTime=50;
						HMotorOut(SIN16[currentCount]) ;
						
					}
					else
					{
						++accDecCount;
						RCAPT2=DECTABLE[accDecCount];
					}
					
					//	HMotorOut(SIN16[currentCount+1]) ;
					break;
				case ACCELERATION:
					if(currentCount==0)
						currentCount=15;
					else
						--currentCount;
					HMotorOut(SIN16[currentCount]) ;
					if(hAbsolutionPosition==0)
						hAbsolutionPosition=3999;
					else
						--hAbsolutionPosition;
					if(accDecCount==15)
					{
						RCAPT2=ACCTABLE[accDecCount];
						accDecCount=0;
						hPresetPosition=hPresetPosition+16;
						haccDecFlag=NORMALMOTION;
					}
					else
					{
						RCAPT2=ACCTABLE[accDecCount];
						++accDecCount; 				
					}
					
					break;
				case NORMALMOTION:
					if(hPresetPosition!=hAbsolutionPosition)
					{
						if(currentCount==0)
							currentCount=15;
						else
							--currentCount;
						HMotorOut(SIN16[currentCount]) ;
						if(hAbsolutionPosition==0)
							hAbsolutionPosition=3999;
						else
							--hAbsolutionPosition;
						RCAPT2=-200;
						//	RCAPT2=ACCDEC[accDecCount];
					}
					else
						haccDecFlag=DECELERATION;
					break;
					
				} 			
				break;
			}
		   }
		   
		   break;
		 case SINGLEMOTION :
			 if(!hOrientFlag)
			 {
				 if(hPresetPosition>hAbsolutionPosition)
				 {
					 if((hPresetPosition-hAbsolutionPosition)<2000)
						 hOrientFlag=1;
					 else 
						 hOrientFlag=-1;
				 }
				 else	if(hPresetPosition==hAbsolutionPosition)  TR2=0;
				 else 
				 {
					 if((hAbsolutionPosition-hPresetPosition)<2000)
						 hOrientFlag=-1;
					 else 
						 hOrientFlag=1;
				 }
			 }
			 //
			 switch(hOrientFlag)
			 {
			 default:break;
			 case 1:
				 {
					 switch(haccDecFlag)
					 {
					 default :break;
					 case DECELERATION:
						 if(currentCount==15)
							 currentCount=0;
						 else
							 ++currentCount;
						 HMotorOut(SIN16[currentCount]) ;
						 if(hAbsolutionPosition==3999)
							 hAbsolutionPosition=0;
						 else
							 ++hAbsolutionPosition;
						 if(accDecCount==15)
						 {
							 RCAPT2=DECTABLE[accDecCount];
							 accDecCount=0;
							 TR2=0;
							 haccDecFlag=0;
							 hOrientFlag=0;
							 HMotorOut(SIN16[currentCount]) ;
						 }
						 else
						 {
							 RCAPT2=DECTABLE[accDecCount];
							 ++accDecCount;				
						 }
						 
						 //	HMotorOut(SIN16[currentCount-1]) ;				
						 break;
					 case ACCELERATION:
						 if(currentCount==15)
							 currentCount=0;
						 else
							 ++currentCount;
						 HMotorOut(SIN16[currentCount]) ;
						 if(hAbsolutionPosition==3999)
							 hAbsolutionPosition=0;
						 else
							 ++hAbsolutionPosition;
						 if(accDecCount==15)
						 {
							 RCAPT2=ACCTABLE[accDecCount];
							 accDecCount=0;
							 haccDecFlag=NORMALMOTION;
							 hPresetPosition=hPresetPosition-16;
						 }
						 else
						 {
							 RCAPT2=ACCTABLE[accDecCount];
							 ++accDecCount;
						 }				
						 break;
					 case NORMALMOTION:
						 if(hPresetPosition!=hAbsolutionPosition)
						 {
							 if(currentCount==15)
								 currentCount=0;
							 else
								 ++currentCount;
							 HMotorOut(SIN16[currentCount]) ;
							 if(hAbsolutionPosition==3999)
								 hAbsolutionPosition=0;
							 else
								 ++hAbsolutionPosition;
							 RCAPT2=-2000;
							 //	RCAPT2=ACCDEC[accDecCount];
						 }
						 else
							 haccDecFlag=DECELERATION;
						 break;
						 
					 } 			
					 break;
				 }
			 case -1:
				 {
					 switch(haccDecFlag)
					 {
					 default :break;
					 case DECELERATION:
						 if(currentCount==0)
							 currentCount=15;
						 else
							 --currentCount;
						 HMotorOut(SIN16[currentCount]) ;
						 if(hAbsolutionPosition==0)
							 hAbsolutionPosition=3999;
						 else
							 --hAbsolutionPosition;
						 if(accDecCount==15)
						 {
							 RCAPT2=DECTABLE[accDecCount];
							 accDecCount=0;
							 TR2=0;
							 haccDecFlag=0;
							 hOrientFlag=0;
							 HMotorOut(SIN16[currentCount]) ;
						 }
						 else
						 {
							 ++accDecCount;
							 RCAPT2=DECTABLE[accDecCount];
						 }
						 
						 //	HMotorOut(SIN16[currentCount+1]) ;
						 break;
					 case ACCELERATION:
						 if(currentCount==0)
							 currentCount=15;
						 else
							 --currentCount;
						 HMotorOut(SIN16[currentCount]) ;
						 if(hAbsolutionPosition==0)
							 hAbsolutionPosition=3999;
						 else
							 --hAbsolutionPosition;
						 if(accDecCount==15)
						 {
							 RCAPT2=ACCTABLE[accDecCount];
							 accDecCount=0;
							 hPresetPosition=hPresetPosition+16;
							 haccDecFlag=NORMALMOTION;
						 }
						 else
						 {
							 RCAPT2=ACCTABLE[accDecCount];
							 ++accDecCount; 				
						 }
						 
						 break;
					 case NORMALMOTION:
						 if(hPresetPosition!=hAbsolutionPosition)
						 {
							 if(currentCount==0)
								 currentCount=15;
							 else
								 --currentCount;
							 HMotorOut(SIN16[currentCount]) ;
							 if(hAbsolutionPosition==0)
								 hAbsolutionPosition=3999;
							 else
								 --hAbsolutionPosition;
							 RCAPT2=-2000;
							 //	RCAPT2=ACCDEC[accDecCount];
						 }
						 else
							 haccDecFlag=DECELERATION;
						 break;
						 
					 } 			
					 break;
				 }
		   }
		   
		   break;
		 case STOPROTATION :
			 switch(hOrientFlag)
			 {
			 default :break;
			 case 1:
				 //	   case DECELERATION:
				 if(currentCount==15)
					 currentCount=0;
				 else
					 ++currentCount;
				 HMotorOut(SIN16[currentCount]) ;
				 if(hAbsolutionPosition==3999)
					 hAbsolutionPosition=0;
				 else
					 ++hAbsolutionPosition;
				 if(accDecCount==15)
				 {
					 RCAPT2=DECTABLE[accDecCount];
					 accDecCount=0;
					 TR2=0;
					 haccDecFlag=0;
					 hOrientFlag=0;
					 HMotorOut(SIN16[currentCount]) ;
				 }
				 else
				 {
					 RCAPT2=DECTABLE[accDecCount];
					 ++accDecCount;				
				 }
				 
				 //	HMotorOut(SIN16[currentCount-1]) ;				
				 break;
				 
			 case -1:
				 //  case DECELERATION:
				 if(currentCount==0)
					 currentCount=15;
				 else
					 --currentCount;
				 HMotorOut(SIN16[currentCount]) ;
				 if(hAbsolutionPosition==0)
					 hAbsolutionPosition=3999;
				 else
					 --hAbsolutionPosition;
				 if(accDecCount==15)
				 {
					 RCAPT2=DECTABLE[accDecCount];
					 accDecCount=0;
					 TR2=0;
					 haccDecFlag=0;
					 hOrientFlag=0;
					 HMotorOut(SIN16[currentCount]) ;
				 }
				 else
				 {
					 ++accDecCount;
					 RCAPT2=DECTABLE[accDecCount];
				 }
				 
				 //	HMotorOut(SIN16[currentCount+1]) ;
				 break;
			 }
			 
			 break;
		}
		}
	
	

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -