|
基于LDC1314的循跡
- void main( void )
- {
- P2SEL &=~ BIT7; //蜂鳴器
- P2DIR |= BIT7;
- P2OUT &=~ BIT7;
- InitSys();
- InitLDC1314();
- Ini_Lcd();
- P6SEL=0;P6DIR|=BIT0+BIT1;P6OUT&=~(BIT0+BIT1); //電機(jī)旋轉(zhuǎn)方向
- _EINT();
- int i;
- InitPWM(0x03E8); //PWM初始化,采用TB輸出2路PWM波
- TBCCR1=TBCCR2=0;
- for(i=0;i《1500;i++) // 電感傳感器自校準(zhǔn)
- {
- D1=LDC1314_Result(1);
- D2=LDC1314_Result(2);
- D3=LDC1314_Result(3);
- }
- initTA(); // 定時(shí)器A初始化,用于計(jì)時(shí)
- go(); //直行
- TIme=mc=sx=0; //開始執(zhí)行 時(shí)間路程清零
- while(1)
- {
- Component_Display(4,0,TIme);//時(shí)間
- sl=(int)((float)sx*3.0);
- Component_Display(4,4,sl); //路程
- if(sl》800){while(1);_DINT();TBCCR1=TBCCR2=0;} //到達(dá)終點(diǎn) 結(jié)束
- value1 = LDC1314_Result(1); Component_Display(1,1,value1);//顯示通道1
- value2 = LDC1314_Result(2); Component_Display(2,1,value2);
- value3 = LDC1314_Result(3); Component_Display(3,1,value3);//顯示
- // 硬幣的檢測
- if ((value1》(2+D1))|| (value2》(2+D2))|| (value3》(2+D3)) || (abs(value2-D2)》20)|| (abs(value1-D1)》20)|| (abs(value3-D3)》20))
- P2OUT |=BIT7;
- else
- P2OUT &=~BIT7;
- //循跡
- if((abs(value3-D3)《20)&&(D3》value3)) { turn_r(); }
- else if((abs(value1-D1)《20)&&(D1》value1)) { turn_l(); }
- else go();
- }
- }
復(fù)制代碼
|
|