(二)
班 级:01540802班
姓 名: 南 征
学 号: 20080705
信息与电子学院
实验二 机器人检测与显示实验
08级 通信工程专业 01540802班 南征(20080705) 第11组
一、实验目的
学习机器人通过几种主要类型的传感器进行数据采集的基本方法,学习LCD的基本知识及其显示与控制方法。
二、实验仪器设备
PC机,组装后的Boe-Bot机器人,USB连接线,PING)))超声波测距传感器,红外线发光管,红外线接收器,220欧姆电阻,1k电阻,光敏电阻,2k电阻,发光二极管,470欧姆电阻,HM55B电子罗盘,连接导线,Parallax 2×16 Serial LCD。
三、实验原理
通过对单片机编写程序控制车轮电机的转速,实现机器人小车的行走。
四、实验内容
1.LCD显示实验
(1)需要部件:Parallax 2×16 Serial LCD,连接导线。
(2)关闭电源。
(3)连接部件:
(4)LCD自检及对比度调节
按图2-2所示LCD背面图及其设置方法,将LCD背面的SW1和SW2均拨至OFF位置,打开电源。LCD将进行自检。
调节LCD背面的电位器使显示出的字符清晰可见。
关闭电源。
(5)LCD字符串信息显示
新建程序LCD_ASCII.bs2,输入下述代码。
' {$STAMP BS2}
' {$PBASIC 2.5}
SEROUT 14,84,[22,12]
PAUSE 5
SEROUT 14,84,[“See this?”,13,“The LCD works!”]
END
连接USB连接线,并打开电源。
下装、运行程序,并观察运行结果,分析其工作原理。
关闭电源。
(6)LCD数字信息显示
新建程序LCD_Number.bs2,输入下述代码。
' {$STAMP BS2}
' {$PBASIC 2.5}
counter VAR Byte
SEROUT 14,84,[22,12]
PAUSE 5
FOR counter = 0 TO 12
SEROUT 14,84,[DEC counter,“ ”]
PAUSE 500
NEXT
END
连接USB连接线,并打开电源。
下装、运行程序,并观察运行结果,分析其工作原理。
关闭电源。
2.超声波测距及LCD显示实验
(1)需要部件:PING)))超声波测距传感器,连接导线,Parallax 2×16 Serial LCD。
(2)关闭电源。
(3)连接部件:
(4)超声波测距传感器检测及显示
新建程序PingLCD.bs2,输入下述代码。
' {$STAMP BS2}
' {$PBASIC 2.5}
CmConstant CON 2260
cmDistance VAR Word
time VAR Word
SEROUT 14,84,[22,12]
PAUSE 5
DO
PULSOUT 15,5
PULSIN 15,1,time
cmDistance = CmConstant ** time
SEROUT 14,84,[12] 4
SEROUT 14,84,[“Distance=”,DEC cmDistance,“cm”]
PAUSE 500
LOOP
END
连接USB连接线,并打开电源。
下装、运行程序,并通过移动机器人改变与物体间的距离观察运行结果,分析其工作原理。
关闭电源。
3.电子罗盘检测及LCD显示实验
(1)需要部件:HM55B电子罗盘,Parallax 2×16 Serial LCD,连接导线。
(2)关闭电源。
(3)连接部件:
(4)热敏电阻检测及LED显示
新建程序HM55B_LCD.bs2,输入下述代码。
' {$STAMP BS2px}
' {$PBASIC 2.5}
DinDout PIN 6 ' P6 transceives to/from Din/Dout
Clk PIN 5 ' P5 sends pulses to HM55B's Clk
En PIN 4 ' P4 controls HM55B's /EN(ABLE)
Reset CON %0000 ' Reset command for HM55B
Measure CON %1000 ' Start measurement command
Report CON %1100 ' Get status/axis values command
Ready CON %1100 ' 11 -> Done, 00 -> no errors
NegMask CON %1111100000000000 ' For 11-bit negative to 16-bits
x VAR Word ' x-axis data
y VAR Word ' y-axis data
status VAR Nib ' Status flags
angle VAR Word ' Store angle measurement
' -----[ Main Routine ]-------------------------------------------------------
SEROUT 14,84,[22,12]
PAUSE 5
10
DO ' Main loop
GOSUB Get_Compass_Axes ' Get x, and y values
angle = x ATN -y ' Convert x and y to brads
angle = angle */ 360 ' Convert brads to degrees
SEROUT 14,84,[12]
SEROUT 14,84,[“Angle=”,DEC angle]
PAUSE 150 ' Debug delay for slower PCs
LOOP ' Repeat main loop
' -----[ Subroutines ]--------------------------------------------------------
Get_Compass_Axes: ' Compass module subroutine
HIGH En: LOW En ' Send reset command to HM55B
SHIFTOUT DinDout,clk,MSBFIRST,[Reset\\4]
HIGH En: LOW En ' HM55B start measurement command
SHIFTOUT DinDout,clk,MSBFIRST,[Measure\\4]
status = 0 ' Clear previous status flags
DO ' Status flag checking loop
HIGH En: LOW En ' Measurement status command
SHIFTOUT DinDout,clk,MSBFIRST,[Report\\4]
SHIFTIN DinDout,clk,MSBPOST,[Status\\4] ' Get Status
LOOP UNTIL status = Ready ' Exit loop when status is ready
SHIFTIN DinDout,clk,MSBPOST,[x\\11,y\\11] ' Get x & y axis values
HIGH En ' Disable module
IF (y.BIT10 = 1) THEN y = y | NegMask ' Store 11-bits as signed word
IF (x.BIT10 = 1) THEN x = x | NegMask ' Repeat for other axis
RETURN
连接USB连接线,并打开电源。
下装、运行程序,并通过转动机器人改变其方位角,观察运行结果,分析其工作原理。
关闭电源。
五、思考与练习
1.如何通过添加机器人运动控制指令,利用超声波测距传感器、红外线传感器、光敏电阻实现机器人避撞功能?
当机器人通过超声波测距传感器、红外线传感器、光敏电阻检测到与前方障碍物的距离很近时,可以编写指令让机器人立即减速最终静止。
2.如何通过添加机器人运动控制指令,利用红外线传感器和光敏电阻实现边缘检测和躲避?
当机器人通过红外线传感器和光敏电阻检测到机器人侧面的障碍物与机器人距离很近时,可以编写指令控制机器人两轮的转速,使其向对侧稍作转向;当与障碍物的距离超出一定范围之后,再令机器人沿直线前行。
3.如何利用超声波测距传感器和红外线传感器同时实现避撞和边缘检测与躲避两项功能?
可分别在机器人的前方和两侧同时安装超声波测距传感器和红外线传感器,并按照以上1、2两题中的思想对机器人进行控制即可同时实现避撞和边缘检测与躲避的功能。
4.如何通过添加机器人运动控制指令,利用电子罗盘实现机器人的方位角控制,使其始终朝向某个指定方向?
当机器人的行进方向与指定方向的偏离角度超过某一值时,可通过指令调整机器人两轮的转速。若机器人的行进方向偏左,则将左轮转速设置稍快于右轮。反之亦然。
5.SEROUT的控制命令包含哪些参数?分别说明其含义。
SEROUT的功能为在输出引脚写入串行数据。
六、心得体会
本次实验中使用了超声波测距传感器、红外线传感器、光敏电阻等多种传感器,并利用这些传感器实现了测距和定向等功能。同时在本次实验中引入了液晶显示器,可以将测量的到的结果显示出来。蔽障和定向是今后实验中将要实现的功能,而本次实验实现的这些基本功能都为将来实现诸如上述更复杂的功能,完成更艰难的任务打下了基础。本次实验中用到了多种外部设备,这也使我对外部设备与CPU的数据指令传输机制有了一个更为深刻的认识。下载本文