《制作五接力机器人.docx》由会员分享,可在线阅读,更多相关《制作五接力机器人.docx(8页珍藏版)》请在课桌文档上搜索。
1、制作五 接力机器人一、 任务描述场地上有机器人跑道,跑道两侧有黑色轨迹,接力区为黑色区域。1号机器人将接力棒(乒乓球)传递给2号机器人,2号机器人把接力棒(乒乓球)传递给3号机器人,然后三号机器人再传递给四号机器人,四号机器人冲向终点区,在终点区停止。场地示意图如图51所示:图51 场地示意图二、 硬件组装机器人需要在跑道内行走并要产生接力,那么机器人最好的行走路线应该在跑道中间,而跑道两侧有黑色线,可以利用机器人的光电模块探测,保证机器人在跑道中间行走,机器人需要产生接力,应该有一个传递(接力)装置,机器人需要识别到达接力区并产生接力需要一个碰撞装置。接力机器人如图52所示。图52 接力机器
2、人三、任务难点分析1 保证机器人在跑道中间行走解决方案:可以在机器人的两侧分别装上两个光电模块,利用光电模块可以对跑道两侧的黑线进行检测保证机器人在跑道中间行走,考虑到接力区为黑色区域,因此光电模块应该是检测两条跑道线的外侧,这样可以提高完成任务的成功率。2 机器人如何知道到达接力区解决方案:在进行接力的两个机器人的前方和后方分别装上碰撞传感器,考虑到有的接力区在跑道的弯道位置,因此接力机器人的前方和后方应分别装上两个碰撞传感器,并将其并联且接触面尽量扩大(可以提高成功率)3 如何产生接力解决方案:当第一台机器人检测到接力信号时启动传递装置将物体传递给第二台机器人,第二台机器人的碰撞传感器检测
3、到信号后延时一段时间后再启动行走。4 机器人停止解决方案:第四台机器人利用左右两侧的光电模块检测到全黑时说明机器人到达了停止线,此时让机器人强行前进一段时间后停止,即可让机器人停止在停止区。四、程序设计1输入/输出端口说明单片机输入/输出引脚对应程序中的位变量引脚功能RB0pin0左侧电机正转RB1pin1左侧电机反转RB2pin2右侧电机正转RB3pin3右侧电机反转RB4pin4电机使能控制端RB6pin6前碰撞开关RB7Pin7后碰撞开关RC1pin9电机正转(传递装置)RC2Pin10电机反转(传递装置)RC4pin12左侧光电传感器(寻黑线)RC5pin13左侧光电传感器(寻黑线)R
4、C6pin14右侧光电传感器(寻黑线)RC7pin15右侧光电传感器(寻黑线)2程序流程图3程序清单(仅供参考,数据需要调整)rem 1,2,3号接力机器人程序dirb0=%11100000 rem定义0,1,2,3,4号端口为输出端口;5,6,7号rem端口为输入端口dirb1=%11110000 rem定义8,9,10,11号端口为输出端口;12,13,14,rem15号端口为输入端口pinb0=0 rem将专用变量PINB0清0pinb1=0 rem将专用变量PINB1清0pause 100 rem机器人初始停止100毫秒start1: if pin7=0 then start rem机
5、器人后碰撞或者声控模块产生信号rem执行START goto start1start: pinb0=0 pause 2000 rem机器人停止2秒a1: x=x+1 rem变量X累加 if pin6=0 then a2 rem机器人前碰撞产生信号执行A2 if x400 then a3 rem变量X的值大于400执行A3 if (pin12=1) or (pin13=1) then zz rem左侧光电模块有rem传感器识别到黑色执rem行左转 if (pin14=1) or (pin15=1) then yz rem右侧光电模块有一个rem传感器识别到黑色执rem行右转 goto qjyz:
6、 pinb0=%00011001 rem机器人调速右转 pause 15 pinb0=0 pause 1 goto a1zz: pinb0=%00010110 rem机器人调速左转 pause 15 pinb0=0 pause 1 goto a1qj: pinb0=%00010101 rem机器人调速前进 pause 1 pinb0=0 pause 2 goto a1a3: if pin6=0 then a2 rem机器人前碰撞产生信号执行A2 if (pin12=1) or (pin13=1) then zz1 rem左侧光电模块有一个rem传感器识别到黑色执rem行左转 if (pin14
7、=1) or (pin15=1) then yz1 rem右侧光电模块有一个rem传感器识别到黑色执rem行右转 goto qj1yz1: pinb0=%00011001 rem机器人调速右转 pause 10 pinb0=0 pause 1 goto a3zz1: pinb0=%00010110 rem机器人调速左转 pause 10 pinb0=0 pause 1 goto a3qj1: pinb0=%00010101 rem机器人调速前进 pause 5 pinb0=0 pause 1 goto a3a2: pin9=1 rem机器人启动传递装置并停止 pin10=0 pause 100
8、0 pin9=0 pin10=1 pause 1000 pinb1=0 pinb0=0 pause 10000 end4号接力机器人程序:(仅供参考,数据需要调整)dirb0=%11100000 rem定义0,1,2,3,4号端口为输出端口;5,6,7号rem端口为输入端口dirb1=%11110000 rem定义8,9,10,11号端口为输出端口;12,13,14,rem15号端口为输入端口pinb0=0 rem将专用变量PINB0清0pinb1=0 rem将专用变量PINB1清0pause 100 rem机器人初始停止100毫秒start1: if pin7=0 then start re
9、m机器人后碰撞产生信号执行START goto start1start: pinb0=0 rem机器人停止2秒 pause 2000 a1: x=x+1 rem变量X累加 if pin6=0 then a2 rem机器人前碰撞产生信号执行A2 if x400 then a3 rem变量X的值大于400执行A3 if (pin14=1) and (pin15=1) and (pin12=1) and (pin13=1) then st rem左侧和右侧的光电模块rem都识别到黑色执行ST if (pin12=1) or (pin13=1) then zz rem左侧光电模块有一个传感rem器识别
10、到黑色执行左转 if (pin14=1) or (pin15=1) then yz rem右侧光电模块有一个传感器rem识别到黑色执行右转 goto qjyz: pinb0=%00011001 rem机器人调速右转 pause 15 pinb0=0 pause 1 goto a1zz: pinb0=%00010110 rem机器人调速左转 pause 15 pinb0=0 pause 1 goto a1qj: pinb0=%00010101 rem机器人调速前进 pause 1 pinb0=0 pause 2 goto a1a3: if pin6=0 then a2 rem机器人前碰撞产生信号
11、执行A2 if (pin14=1) and (pin15=1) and (pin12=1) and (pin13=1) then st rem左侧和右侧的光电模块都识别到黑色执行ST if (pin12=1) or (pin13=1) then zz1 rem左侧光电模块有一个传感器识别到黑色执行左转 if (pin14=1) or (pin15=1) then yz1 rem右侧光电模块有一个传感器识别到黑色执行右转 goto qj1yz1: pinb0=%00011001 rem机器人调速右转 pause 10 pinb0=0 pause 1 goto a3zz1: pinb0=%00010110 rem机器人调速左转 pause 10 pinb0=0 pause 1 goto a3qj1: pinb0=%00010101 rem机器人调速前进 pause 5 pinb0=0 pause 1 goto a3a2: pin9=1 rem机器人启动传递装置 pin10=0 pause 1000 pin9=0 pin10=1 pause 1000 pinb1=0 pinb0=0 pause 10000st: pinb0=0 rem机器人调速停止 pause 50000 end