发表日期:2016-10-31 18:07:16文章编辑:浏览次数: 标签:
#include <LNDZ.h>
ground gro(23);
int ll,l,m,r,rr,n,t=0;
void check()
{
ll=gro.getV(1);
l=gro.getV(2);
m=gro.getV(5);
r=gro.getV(3);
rr=gro.getV(4);
n=ll+l+m+r+rr;
}
void find()
{
if (ll==0) motor(-30,30);
else
if (l==0) motor(0,30);
else
if (r==0) motor(30,0);
else
if (rr==0) motor(30,-30);
else
if (m==0) motor(30,30);
}
void init()
{
while (1)
{
check();
find();
if (n<2) break;
}
motor(-30,30);
beep(300);
while (2)
{
check();
find();
if (ll+l==0||ll+m==0||ll+r==0||n<2) break;
}
motor(30,30);
delay(60);
motor(-30,30);
beep(300);
while (3)
{
check();
find();
if (ll+rr==0||n==0)break;
}
motor(30,30);
beep(150);
while (4)
{
find();
check();
if (ll+rr==0||l+r==0||ll+m==0||ll+r==0||l+rr==0||m+rr==0)
break;
}
motor(0,30);
beep(200);
while (5)
{
check();
find();
if (n<3||m+rr==0||r+l==0||rr+r==0) break;
}
motor(0,30);
beep(300);
while (6)
{
check();
find();
if (n<3||ll+l==0||ll+m==0) break;
}
motor(-30,30);
beep(300);
while (7)
{
check();
find();
if (n<3||r+l==0||r+ll==0||l+rr==0||ll+rr==0) break;
}
motor(30,-30);
beep(300);
while (8)
{
check();
find();
if (n<3||rr+r==0||m+rr==0||r+l==0) break;
}
motor(30,-30);
beep(300);
while (9)
{
check();
find();
if (n<2) break;
}
motor(0,0);
}
void repeat()
{}
编者按语:此程序的特点是:用路口将轨迹进行分段,然后针对不同的路况进行单独处理。这样,可以步步为营,一步一步地去实现,互不影响。不足之处,就是程序太长,书写效率略嫌低。但对新学者理清思路有帮助。每个while()括号里的数字,只取一个标记作用,只要不是0,就不影响程序结果。