欢迎来到天天文库
浏览记录
ID:37722425
大小:111.00 KB
页数:7页
时间:2019-05-29
《走迷宫机器人》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、走迷宫机器人一、实训目的1、进一步掌握直流减速电机的运动控制;2、掌握光电传感器的应用;3、熟悉光电传感器的工作原理;4、熟悉机器人调试方法;5、掌握C语言条件判断与分支语句的应用;6、掌握走迷宫的基本法则:左手法则、右手法则。二、实训设备1、机器小车一台2、PC机一台3、光电传感器(TCRT5000)五个4、L298驱动板一块5、电阻若干6、电位器103五个7、LM324两个8、单片机最小系统板一块9、电源三、实训原理及内容1、光电传感器工作原理:能够分别黑线和白线,在白线上输出低电平、黑线上输出
2、高电平。2、路迹识别原理:通过判断左右两边和前面的光电传感器(TCRT5000),来识别路径,然后通过右手法则来实现走迷宫。3、实训内容:本次实训的任务是要求机器人能够完成走线性迷宫,通过判断前面和两边的传感器的状态来识别路径,如果前面三个传感器都输入为高电平先右转90度,在右转90度的过程中再判断中间三个传感器的状态变化,来判断是否转对了,如果转完90度后,前面三个传感器全部输入高电平,则再左转180度,这里用右手法则实现走线性迷宫。4、传感器(TCRT5000)应用原理图1、程序流程图一、实训步
3、骤1、制作光电传感器模块电路;2、将制作好的光电传感器模块电路在线性迷宫的调试;3、检查L298驱动板与电机、单片机的连接;4、连接光电传感器模块与单片机;5、烧写走迷宫机器人的软件HEX文件到单片机中;1、上电执行,观察现象。若机器人能够走出线性迷宫,则完成实训。否则要再次调软件和硬件。一、实训参考源代码#include//宏定义机器人运动#defineforward0x2b#defineback0x35#defineleft0x23#defineright0x29//定义传感器
4、的位sbitlefts=P1^0;sbitins=P1^1;sbitrights=P1^2;sbitls=P1^3;sbitrs=P1^4;//函数的声明voidrightzhuan(void);voidleftzhuan(void);voiddelay(void);voiddelay1(void);voiddelay(void)//延时函数{unsignedchara,b,c;for(c=123;c>0;c--)for(b=116;b>0;b--)for(a=9;a>0;a--);}voiddel
5、ay1(void)//延时函数{unsignedchara,b,c;for(c=23;c>0;c--)for(b=152;b>0;b--)for(a=70;a>0;a--);}voidrightzhuan()//机器人右转函数{inti;while(1){if((lefts==0)&&(ins==0)&&(rights==0)){P2=forward;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif(((lefts==1)&&(ins==0)&&(righ
6、ts==0))){P2=right;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif(((lefts==0)&&(ins==0)&&(rights==1))){P2=left;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif((lefts==1)&&(ins==1)&&(rights==1)){for(i=0;i<1;i++){P2=back;delay();P2=right;delay1();if((lefts
7、==0)
8、
9、(ins==0)
10、
11、(rights==1))return;if(ls==1)P2=right;elseif(rs==1)P2=left;}}}}voidleftzhuan()//机器人左传函数{inti;while(1){if((lefts==0)&&(ins==0)&&(rights==0)){P2=forward;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif(((lefts==1)&&(ins==0)&&(rights==0))){P2
12、=right;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif(((lefts==0)&&(ins==0)&&(rights==1))){P2=left;if(ls==1)P2=right;elseif(rs==1)P2=left;}elseif((lefts==1)&&(ins==1)&&(rights==1)){for(i=0;i<1;i++){P2=back;delay();P2=left;delay1();if((l
此文档下载收益归作者所有