Page Title

第8课 防撞智能小车


2019-08-02 10:14:20

图片.png 

为提高行驶中智能小车的安全性,需给智能小车安装一个测距仪,使其在撞到障碍物前能自动改变行驶方向或停下来。本节课,就让我们一起制作一个自动测距仪(如图8-1所示)


blob.png

8-1 “防撞智能小车”范例作品示意图


图片.png 

要制作本课范例作品,除小车外,还需具备以下硬件模块:

超声波传感器

超声波传感器是一种能将超声波信号转换成其他能量信号的传感器,既可以发射超声波,也可以接收超声波。正常工作时,超声波传感器发射的超声波在碰到杂质或分界面时会产生显著反射,形成反射回波。根据发射超声波和接收反射回波的间隔时间,以及超声波在媒质中的速度,超声波传感器可以快速地测出离障碍物的距离。好好搭搭智能小车套件中的超声波传感器如下图8-2所示:


blob.png

8-2 好好搭搭智能小车套件中的“超声波传感器”图示


要成功制作本课范例作品,除具备超声波传感器外,还需用到以下指令:

blob.png

这个指令主要用于读取超声波传感器测得的值。单击下拉列表可以选择超声波传感器连接的端口,有S0S3A0A38个端口可供选择,默认为S0端口。编程时,该指令不能单独使用,一般仅作为其他指令的一个参数。

图片.png 

要让行驶中的智能小车顺利躲避近前方的障碍物,需给智能小车设置相应的执行动作。如果智能小车测到了近前方有障碍物,那么小车往右后方或左后方偏转,否则一直向前行驶。具体程序流程图如下8-3所示:


blob.png

8-3 本课范例作品“防撞智能小车”的程序流程图


第一步:测一测安全距离


智能小车如果在离障碍物几米远的地方就停止行驶,那将会使很多任务完成不了;而如果等撞上障碍物了再停止,那小车很可能会被撞坏。因此,确定小车的安全距离显得尤为重要。具体可以按以下步骤操作:

首先创建一个变量,用于存储超声波传感器读取的数值,比如distance

然后编写程序,监测超声波传感器和障碍物之间的距离。具体程序代码如下图8-4所示:


blob.png

8-4 监测超声波传感器到障碍物之间距离的程序代码



图片.png 

先把数码管连接到C0端口,超声波传感器连接到S0端口;然后编写如图8-4所示的程序代码,编绎下载到智能小车中运行。测一测,超声波传感器能测得的最大值和最小值分别是多少,安全距离设为多少比较合适?

经过测试,我发现超声波传感器能测得的最大值是_______,最小值是_______;我认为安全距离设置为_______比较好。


 

第二步:躲避障碍物


测得安全距离后,就可以编写程序,让智能小车自动躲避障碍物了。

如果超声波传感器测得的值“大于”安全距离,那么智能小车向前行驶,否则智能小车向右后方偏转。如此重复执行,智能小车就能成功地避开障碍物了。具体程序代码如图8-5所示:


blob.png

blob.png

8-5 智能小车自动躲避障碍物的程序代码


图片.png 

     编写类似图8-5所示的程序代码,编绎下载到智能小车中运行。让智能小车从房屋的门口开始,向着屋内行驶;行驶过程中,不能让智能小车破坏墙壁;最后,还要能让智能小车成功地驶离房屋。

 

图片.png 

利用超声波传感器,除了躲避障碍物外,你还能创作出其他的作品吗?比如“跟随小车”。当离你的脚后跟很近时,智能小车停止行驶,并亮起双跳灯,以提醒其他人不要撞上你;当和你保持在安全距离范围内,智能小车则乖乖地跟在你身后;当离你太远时,智能小车则加速行驶,并用柔和的音乐声提醒你,走得太快了,需要等一等。

通过不断地探索、调试,我终于成功地创作了作品——跟随小车。相应的程序代码已保存在“好好搭搭”网站上,名称是_________________________;将作品共享了以后,收获了_____个赞。综合别人给我提的建议,我认为还可以在以下方面进行改进:______________