机器人实训总结.docx
- 文档编号:2030927
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:20
- 大小:20.02KB
机器人实训总结.docx
《机器人实训总结.docx》由会员分享,可在线阅读,更多相关《机器人实训总结.docx(20页珍藏版)》请在冰豆网上搜索。
机器人实训总结
机器人实训总结
学院:
专业班级:
姓名学号:
指导教师:
2013年7月
为期一周的机器人实训转眼就过去了,个人认为这是我上大学以来参加的最有意思的一次课程设计了,在实训期间,同学们亲自动手组装机器人小车并通过修改调试程序使自己的小车完成要求的任务,将平时学习的C语言和单片机知识运用到了实际操作中,极大地调动了我们学习的积极性并提高了动手能力,是我们受益匪浅!
任务一:
组装小车并完成基本调试
实训第一天我们的主要任务便是将实训机器人小车按要求组装好,这看似简单的任务是极其需要耐心与细致的,每一个螺丝都要拧紧,每一个电子元件都要安装于指定位置,特别要注意左右轮的接线,如果反接将会使小车反向运行。
经过半小时的摸索,我们的小车终于成形,但当给它录入一个前行程序时,小车竟然莫名其妙的在原地打转,我们仔细查阅了实训指导书,才发现问题所在,原来,每一个新组装的机器人都需要进行调零检测才能保证其运行的准确,调零程序如下:
#include
#include
intmain(void)
{
uart_Init();
printf("TheLEDconnectedtoP1_0isblinking!
\n");
while
(1);
{
P1_0=1;
delay_nus(1500);
P1_0=0;
delay_nus(20000);
}
}
将程序录入小车并运行,旋转车轮旁的旋钮直至车轮停转便达到了调零的目的。
接下来,我们便要完成实训要求的第一个程序:
控制小车LED灯的亮灭。
通过参考指导书的已
有程序,我们比较顺利的完成了该任务,任务程序如下:
(在试验中需要注意LED灯的正
负极)
#include
#include
intmain(void)
{
uart_Init();
printf("TheLEDconnectedtoP1_0isblinking!
\n");
while
(1)
{
P1_0=0;
P1_1=1;
delay_nms(500);
P1_0=1;
P1_1=0;
delay_nms(500);
}
}
任务二:
机器人触觉导航
该任务要求机器人碰到障碍物时,接触开关会有所察觉,通过编程让机器人避开障碍物。
在安装胡须时,需要注意胡须距传感立柱既不能太远也不能太近,太远会导致机器人碰到障碍物后反应过慢,太近则会使机器人在前方没有障碍物的情况下进行避障操作,影响小车正常行进。
胡须机器人避障程序如下:
#include
#include
intP1_4state(void)〃获取P1_4的状态,右胡须
{
return(P1&0x10)?
1:
0;
}
intP2_3state(void)〃获取P2_3的状态,左胡须
{
return(P2&0x08)?
1:
0;
}
voidForward(void)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
voidRight_Turn(void)
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;delay_nms(20);
}
}
voidBackward(void)
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
intmain(void)
{
uart_Init();
printf("ProgramRunning!
\n");
while
(1)
{if((P1_4state()==0)&&(P2_3state()==0))
{
Backward();//向后
Left_Turn();//向左
Left_Turn();//向左
}
elseif(P1_4state()==0)
{
Backward();//向后
Left_Turn();//向左
}
elseif(P2_3state()==0)
{
Backward();//向后
Right_Turn();//向右
}
else
Forward();//向前
}
}
任务三:
机器人红外线导航
任务二触须接触导航是依靠接触变形来探测物体,而本任务是依靠红外线探测机器人前进路线,然后确定何时有光线从被探测物体反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。
在本次任务中,我们需要使用三极管9013,这是因为C51的10驱动能力较弱,这里我们加入三极管使其工作在开关状态。
三极管是一种控制元件,主要用来控制电流大小,简单地说,是用小电流去控制大电流。
红外导航避障程序如下:
#include
#include
#include
#defineLeftIRP1_2//左边红外接收连接到P1_2
#defineRightIRP3_5//右边红外接收连接到P3_5
#defineLeftLaunchP1_3//左边红外发射连接到P1_3
#defineRightLaunchP3_6//右边红外发射连接到P3_6voidIRLaunch(unsignedcharIR)
{
intcounter;
if(IR=='L')
for(counter=0;counter<38;counter++)
{
LeftLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
if(IR=='R')
for(counter=0;counter<38;counter++)//右边发射
{
RightLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();RightLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
voidForward(void)//向前行走子程序
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)//左转子程序
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;delay_nms(20);
}
}
voidRight_Turn(void)//右转子程序
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;delay_nus(1700);
P1_1=0;
P1_0=1;delay_nus(1700);
P1_0=0;delay_nms(20);
}
}
voidBackward(void)//向后行走子程序
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;delay_nus(1300);
P1_1=0;
P1_0=1;delay_nus(1700);
P1_0=0;delay_nms(20);
}
}
intmain(void)
{
intirDetectLeft,irDetectRight;
uart_Init();printf("ProgramRunning!
\n");
while
(1)
{
IRLaunch('R');//右边发射irDetectRight=RightIR;//右边接收
IRLaunch('L');//左边发射
irDetectLeft=LeftIR;//左边接收
两边同时接收到红外线
if((irDetectLeft==0)&&(irDetectRight==0))//
{
Backward();
Left_Turn();
Left_Turn();
}
elseif(irDetectLeft==0)//只有左边接收到红外线
{
Backward();
Right_Turn();
}
elseif(irDetectRight==0)//只有右边接收到红外线{
Backward();
Left_Turn();
}
else
Forward();
}
}
任务四:
尾随小车
该任务的设计线路与任务三相同,故完成较为简单,试验程序如下:
#include
#include
#include
#defineLeftIRP1_2//
#defineRightIRP3_5//
#defineLeftLaunchP1_3//
#defineRightLaunchP3_6//
左边红外接收连接到P1_2
右边红外接收连接到P3_5
左边红外发射连接到P1_3
右边红外发射连接到P3_6
voidIRLaunch(unsignedcharIR)
{
intcounter;
if(IR=='L')//左边发射for(counter=0;counter<38;counter++){
LeftLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)