Esempio n. 1
0
void PIDmotor()
{
        s16 var=0;
        u8 servo_rela_speed =xielv1;  //电机速度受角度的限制
        double K_servo_rela_speed=0.1;//???待测 斜率影响电机速度
        speed = LPTMR0_CNR;// 改动  
        var=IncPIDCalc(speed);
        uiGoalvalue1 += var;
        
        if((uiGoalvalue1>=0)&&(uiGoalvalue1<=900))
        {
               GOON();
              if(motorfirst_flag==0)
              {
                    if(uiGoalvalue1>500)
                    {
                      FTM_PWM_Duty(FTM0,CH0,uiGoalvalue1);
                      delayms(500);
                      motorfirst_flag=1;
                    }
              }
              if(motorfirst_flag==1)
              FTM_PWM_Duty(FTM0,CH0,uiGoalvalue1);
        }
        else if(uiGoalvalue1>900)
        {
            GOON();
            uiGoalvalue1=900;
        }
        else if(uiGoalvalue1<0)
        {
            uiGoalvalue1=0;
            //shache();
            //FTM_PWM_Duty(FTM0,CH0,300);
           
        }
        else
        {
             //uiGoalvalue1=300;//printf("\n****是负值*****\r\n\n");
        }
        if( iError<=-30)
        {
              shache();
              FTM_PWM_Duty(FTM0,CH0,900);
              
              
        }
    
}
Esempio n. 2
0
void main()			   
{													  
	uchar shujv[8];		
	uchar stop=0;
	uchar cejv=1; 
	uchar flag=0;
	uchar helpcejv=0;	 
	init_io();
	led0=1;led1=1;ledk=1; 
	while(NRF_Check())	 
	{
		led0=0;
		delayms(1000);
		led0=1;
		delayms(1000);								  
	}	
	TX_Mode();		   //设置为发送模式
	/*************自己加的***********************/
	while(CNRF_Check())	 //检查nrf是否存在
	{
		led0=0;
		delayms(1000);
		led0=1;
		delayms(1000);								  
	}	
	CTX_Mode();
	/*************自己加的***********************/
	stop=byte_read(0x2000);		//读取上一次保留的值
	while(1)
	{
			wenshi(shujv); //写入前4个数据
		//	yali(shujv);//写入第5个数据
		//	shache(shujv);//写入第六个数据
	Get_weight();
	if (weight_shiwu/1000<=5)
	shujv[4]='0';
	else shujv[4]='1';


	if(stop==0)		 
		shujv[5]='1';
	if(stop==1)		 
		shujv[5]='0';
		if(out==0)	
		shujv[6]='1';
		else	
		shujv[6]='0';

		//////////////////////////////
			if(NRF24L01_TxPacket(shujv)==TX_OK)	
			{
				led1=0;
				delayms(300);
				led1=1;
				delayms(10);
				/////
				flag=1;
			}
			else flag=0;

	   //////////////////////////////
			if(flag==1)
			{
				if(CNRF24L01_TxPacket(shujv)==TX_OK)	
				{
					led3=0;
					delayms(300);
					led3=1;
					delayms(10);
					cejv=0;		
					helpcejv=0;
				}	
				else  
				{
					helpcejv++;
					delayms(100);
					if(helpcejv>2)
					{  			led2=0;
								delayms(300);
								led2=1;
								delayms(10);
						cejv=0;
						helpcejv=0;	
					}		 
				}
			/////////////////////////////////////////////////
							
			if(shache(cejv,stop)==1)	
			{
					led0=0;
					delayms(300);
					led0=1;
					delayms(10);
			stop=1;							  
			SectorErase(0x2000);
			byte_write(0x2000,stop);
			}
			if(checkbutton(cejv,stop)==0)
			{stop=1;
						
			SectorErase(0x2000);
			byte_write(0x2000,stop);
			}
			}			
	}
}