迷宫机器人实验报告

  • 格式:docx
  • 大小:112.35 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

迷宫机器人实验报告

学院:信息与通信工程学院

班级:2010211126班

组员:袁帅林彬

学号:10210718 10210721

一、实验目的

1、实际学习基本的电子工艺,掌握一般的电子工艺技能,了解

电子产品的生产流程;

2、掌握电子技术安全常识、原件基础知识,电子技术的焊接、

装配工艺、常用仪表的使用;

3、培养初步的工程设计能力和创新意识,以及严谨、他是、科

学的工作作风,提高解决实际问题的能力和素质。

4、学习基本的单片机知识,并编程实现迷宫车的基本功能。

二、设计器材

三、功能描述

迷宫车采用前轮驱动,前轮左右两边各用一个电机驱动,可以通过对两个轮转动方向的控制从而实现小车的前进、后退以及转向的目的,后轮是万向轮,起支撑作用。将三个红外线光电传感器分别装在车体的前方的左中右,当车前边的传感器没有检测到障碍物时,前进;如有障碍物,接着处理左边传感器传过来的信息,如果左边传感器没有检测到障碍物,则芯片控制右轮前转,左轮向后转,实现左转;如果左边传感器也检测到障碍物,则接着检测右边是否有障碍物。如果三边均有障碍物,则后退,反之,,右边没有障碍物,右转。即,车的传感器检测方向顺序分别为前方,左边,右边,从而可实现迷宫车在迷宫中的有效智能通行。

四、实验设计过程

硬件部分:

学校提供给我们的只是一个个零件(见设计器材),要实现迷宫车,我们第一步需要做的就是利用学校提供的原件以及电路图组装出一辆完好的小车,这一部分要实现的基本功能是两个电动机能有效的转动,并且通过下载老师提供的基本程序六段七位数码管能够分别显示出0 1 2 3 4 5。

由于我们以前并没有接受过相关的电焊培训,大家都很珍惜这一次机会,而且学得很认真,我们小组两人通过参考图片和实验教材,两人分工合作,只利用了一个早上就把小车的基本部分全部焊完。并顺利通过了老师的验收,得到“优”。

在这一部分,我们小组遇到的问题就是刚开始把小车的两个电机方向焊反了,通过改变其中的一个电机的连线既解决了问题。

软件部分:

如果说硬件部分的实现考验的是我们动手能力,那么软件部分的实现考验的是我们的编程能力。软件编程属于单片机编程,使用的编程软件为Keil uVision4,下载软件为STC。由于之前没有学习过单片机的知识,我们从图书馆借单片机方面的书,现学现用,在实践中检验学习成果。

在编写程序的过程中我们遇到的问题大概有如下几个:一为怎么实现数电红外传感器的信息正确传递给单片机处理器;二为怎么根据这些信息正确地做出判断,做出怎样的判断。三为是否已经把所有可能出现的情况已经考虑完全,并做出正确的反应,使之能够成功快速地走出迷宫。随着我们对单片机的学习的深入,这些问题都一个个的被解决掉。对于第一个问题,只要合理的定义接口即可;第二个问题,采用IF语句,作出判断;第三个问题,我们先在纸上列出所有可能的情况,然后讨论并编程实现。

在这些问题中,有一些是比较基础的问题,我们通过查找书籍和资料,很快就解决好;在这些问题中,困扰我们最多的问题也是在程序组成中最重要的是迷宫机器人的避障程序,如果离开了这一个程序迷宫机器人就无从谈起。我们在编写这一部分的程序的过程中,思路经历了三次变化。刚开始我们的想法比较简单,

考虑的情况也不够完善,以下是我们刚开始的避障程序部分:

while(1)

{

LED1=0;

LED2=0;

display();

if( Front==0)

qianjin();

else if ( Left==0)

zuozhuan();

else if( Right==0)

youzhuan();

else

houtui();

}

在这一部分程序中,我们没有考虑完全,事实证明这样编写的程序是有错误的;然后我们把迷宫机器人在迷宫中每一种可能出现的情况都在纸上列出来,两个人进行了讨论,对程序进行了一些修改和完善。以下是我们进行修改后的程序:

while(1)

{

LED1=0;

LED2=0;

display();

count++;

if(front==0)

qianjin();

else if(front==0&&left==1)

zuozhuan();

else if( front==0&&left==0&&right==1)

youzhuan();

else

houtui();

}

我们对修改后的程序进行了检验,有了不少的进步,但是我们同时意识到这个程

序还存在不足,在迷宫中行驶时会遇到更为复杂的情况,迷宫车难以成功地驶出迷宫。于是我们再次对程序进行了修改,如下所示:

while(1)

{

LED1=0;

LED2=0;

display();

if(FRONT==1)

//若前方无障碍,前进!FRONT="1"表示前方无障碍,FRONT="0"表示前方有障碍

while(FRONT)

{

display();

qianjin();

stop();

}

else if(LEFT==1) //若左方无障碍,停止、左转!{

display();

stop();

zuozhuan();

}

else if(RIGHT==1) //右方无障碍,停止、右转!

{

display();

stop();

youzhuan();

}

elseif(LEFT==0&&RIGHT==0) //若小车进入死胡同,立刻停止!{

display();

stop();

while(!RIGHT)

//当小车右侧有障碍时,持续后退!否则,跳出循环!停止!

{

display();

houtui();

Delay_ms(200);}

stop();

youzhuan();

//然后右转、暂时停止!

stop();

}

}