第四届全国大学生智能汽车邀请赛技术报告 //begin ATD1,ch0 begin ////////////////////////舵机转弯////////////////////// clock1++; if(clock1==1)
ADValue[0]=AD_Value[0]; if(clock1==15)
ADValue[1]=AD_Value[0]; if(clock1==30)
ADValue[2]=AD_Value[0]; if(clock1>30)
clock1=0;
if(ADValue[2]>(ADValue[1]+6)&&ADValue[1]>(ADValue[0]+6)&&ADValue[2]<200) non_stop=1;
if(non_stop==1)
{
//if(ADValue[0]>(ADValue[1]+6)&&ADValue[1]>(ADValue[2]+6)&&ADValue[0]<200) //xiapo=1; yanshi++; }
if(yanshi>=1000) { yanshi=0; non_stop=0; }
if(count0==0) {
exit1=3000;
ave_weight[2]=ave_weight[1]; }
else if(count0>6 && count0<14) { } else {
exit1=3000;
ave_weight[2]=((atd_value[0]*(-13)+atd_value[1]*(-11)+atd_value[2]*(-9)+atd_value[3]*(-7)+atd_value[4]*(-5)+atd_value[5]*(-3)+atd_value[6]*(-1)+atd_value[7]*(1)+atd_value[8]*(3)+atd_value[9]*(5)+atd_value[10]*7+atd_value[11]*9+atd_value[12]*11+atd_value[13]*13)/count0); }
23
第四届全国大学生智能汽车邀请赛技术报告
Sensor+=pid1(ave_weight[2],ave_weight[1],ave_weight[0]); if(Sensor>MID+MAXTURN) {
Sensor=MID+MAXTURN; }
if(Sensor Sensor=MID-MAXTURN; } PWMDTY01=Sensor; ave_weight[0]=ave_weight[1]; ave_weight[1]=ave_weight[2]; count0=0; ////////////////////////起跑线识别////////////////////////// if(!stop) { for(i=0;i<2;i++){ //3 if(atd_value[i]==1){ for(j=i;j<7;j++){ if(atd_value[j]==0){ for(k=j;k<9;k++){ if(atd_value[k]==1){ for(l=k;l<12;l++){ if(atd_value[l]==0){ for(m=l;m<14;m++){ if(atd_value[m]==1){ exit_flag=1; } } } } } } } } } } if(exit_flag==1){ exit1++; if(exit1>3003&&yanshi==0) 24 第四届全国大学生智能汽车邀请赛技术报告 { exit++;exit1=0; if(exit>2)exit=2; } } exit_flag=0; } zanshi++; } /**********************定时器溢出中断*********************/ void interrupt 16 TIMER_OVERFLOW(void)//187.5khz counter freq.349.5ms overflow once { int i; i=TCNT; if(stop_flag==1) { if(exit stop_flag=1; } /**********************ECT捕捉中断************************/ void interrupt 8 IC0_ISR(void) per sec 24对 { stop_flag=0; IC0Counter=TC0;//获得当前IC0的计数值 ,clearing C0F flag pulse_counter=IC0Counter-IC0Counter_1; IC0Counter_1=IC0Counter; GearWidth[1]=pulse_counter; for(GearIndex=0;GearIndex<2;GearIndex++) GearWidthSum=GearWidthSum+(unsigned long)GearWidth[GearIndex]; AveGearWidth=GearWidthSum/2; AveSpeed=93750L/AveGearWidth; NowSpeed=(int)AveSpeed; GearWidthSum=0; GearWidth[0]=GearWidth[1]; } //when speed is 2.4m/s,15 rounds per sec,15*32=480 int 25