第三题参考代码: (程序名:program3)
#include <LNDZ.h>
ground gro(23);
int ll,l,m,r,rr,n;
int t=0;
//这只是一个示范,代码可以其他的方法来写。这道题目没有得分上限。
//考验的主要是选手现场应变能力。
void check()
{
ll=gro.getV(1);//获取眼睛1(灰度传感器)的值
l=gro.getV(2);//获取眼睛2(灰度传感器)的值
r=gro.getV(3);//获取眼睛3(灰度传感器)的值
rr=gro.getV(4);//获取眼睛4(灰度传感器)的值
m=gro.getV(5);//获取眼睛5(灰度传感器)的值
n=ll+l+m+r+rr;
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()
{}
void repeat()
{
check();//调用自定义函数
if(n<4)//如果2个以上的眼睛看见黑线
{
t++;//记录路口数, 每次t+1;
//当t等于以下情况时,向前走100毫秒;
if(t==1||t==2||t==4||t==5||t==7||t==8||t==10||t==11||t==13||t==14||t==16||t==17||t==19)
{
motor(30,30);
beep(100);
}
if(t==3||t==6||t==9||t==12)//当t等于以下情况时,向前走300毫秒,再右转;
{
motor(35,35);
delay(300);
motor(45,-45);
delay(450);
}
if(t==15)//当t等于以下情况时,机器人向右转,延时并鸣叫400毫秒;
{
motor(45,-45);
beep(400);
}
if(t==18)//当t等于以下情况时,机器人向左转,延时并鸣叫400毫秒;
{
motor(-45,45);
beep(400);
}
if(t==20)//当t等于以下情况时,结束程序
{
motor(0,0);
while(1);
}
}
if(n==5) //当5个眼睛都没有看见黑线时,向前走50毫秒。
{
motor(30,30);
delay(50);
}
}
注意以上代码的格式,包括“}”的位置。
|