金牌会员
- 积分
- 1194
- 威望
- 592
- 贡献
- 344
- 兑换币
- 346
- 注册时间
- 2013-3-10
- 在线时间
- 129 小时
|
本帖最后由 w4540025 于 2014-7-29 15:58 编辑
if(ccdcnr==9&&star1==1&&podao==0)
{
ccdR=0;
ccdL=0;
uint8 i;
ccdmin=255;
ccdmax=0;
for(i=1;i<128;i++) //不是从第一个开始是因为第一个点坏了····
{
if(ADV>ccdmax)
ccdmax=ADV;
if(ADV<ccdmin)
ccdmin=ADV;
}
ccdmid=(ccdmax+ccdmin)/2; //这是求阈值 ···不是巡线用不着太高深的算法
for(i=0;i<64;i++) //数出小于阈值的点的个数 作为判断的条件
{
if(ADV<ccdmid&&ADV<240)
ccdL++;
}
for(i=64;i<128;i++)
{
if(ADV<ccdmid&&ADV<240)
ccdR++;
}
if((ccdL>20||ccdR>20)&&(Pe1-PECCD>-200&&Pe1-PECCD<200)&&(id<30&&id>-30)&&adpodao==0) //在直道才开这个判断
{
ccdflag=1; //这里开启标志位进行计步
//gpio_ctrl (PORTB,9, 0); //这个是蜂鸣器 测试用
if(ccdL-ccdR>10)
PECCD=+80; //这个偏差求出来后 直接加到巡线算法求出来的偏差上
else
PECCD=-80;
}
else if(ccdflag==0)
{
PECCD=0;
//gpio_ctrl (PORTB,9, 1);
}
}
补充内容 (2014-7-29 16:55):
ADV=ADV 为什么粘过来全变成ADV了呢···
补充内容 (2014-7-29 16:56):
还是没有···· ADV=ADV(i) 大家应该大概明白是什么意思··· |
|