第6课 害羞的智能小车

情景描述

行驶在路上的智能小车,突然遇到强光照射或者大声喝令时,会作出什么反应呢?本节课,就让我们一起来探索,设计一辆害羞的智能小车(如下图6-1所示)。

图6-1 害羞的智能小车示意图

 

知识概念

要设计本课的范例作品,需先认识以下这些硬件模块:

 

光线传感器

光线传感器,是一种能感知周围环境的光线强弱并转换成可用输出信号的检测装置。智能小车套件中的光线传感器(如图6-2所示)方向性比较好,可以感知固定方向的光源,并把从外界环境中感知到的光线强弱以数值的形式表现出来。

图6-2 智能小车套件中的"光线传感器"

 

声音传感器

声音传感器,是一种能感知周围环境的声音强弱并转换成可用输出信号的检测装置。智能小车套件中的声音传感器(如图6-3所示)相当于一个话筒(麦克风),能把从周围环境中接收到的声波以数值的形式表现出来。

图6-3 智能小车套件中的"声音传感器"

 

数码管

数码管,是一种可以显示数值其他信息的电子设备。智能小车套件中的数码管(如图6-4所示)可以显示两种类型的数值:整数和小数。

图6-4 智能小车套件中的"数码管"

 

要完成本课范例作品的设计,除上述硬件模块以外,还需了解以下这些新的指令:

这个指令主要用于读取物理传感器输出的信号。

指令默认端口为A0,通过单击下拉列表可以选择其他三个端口:A1、A2和A3。编程时,这个指令须和其他指令结合使用,一般情况下仅作为其他指令的一个参数值。

 

这个指令主要用于显示整数或小数。

通过单击第一个参数的下拉列表可以选择数码管连接的端口,有C0、C1、M2三个端口可供选择,默认为C0端口;通过单击第二个参数的下拉列表可以选择数值的显示形式,整数或小数;第三个参数是在数码管上显示的数值,默认为123,用户可以通过键盘输入具体数字,也可以把一些变量拖放到这个参数中。

 

这个指令的功能是清除数码管上显示的数值。

通过单击参数的下拉列表,可以选择数码管连接的端口:C0、C1或M2。一般情况下,这个指令和“数码管显示”指令一起使用,是一对黄金搭档。

 

试一试:

编写一段程序,让智能小车的数码管交替显示两组数字“123”和“5678”,并将调试正确的程序代码记录下来。

 

作品制作

害羞的智能小车,在遇到强光照射时,会加速行驶以躲避强烈的光照;在没有强光时,则以正常速度行驶。具体程序流程图如下所示:

图6-5 "害羞的智能小车"范例作品程序流程图

 

第一步:测一测临界值

临界值是指物体从一种状态转变到另一种状态时,某一物理量所需满足的条件。本课提到的临界值,通俗地说,就是划分光线或声音强、弱的一个数值。而这个数值不能随意取得,需根据光线传感器或声音传感器在不同环境条件下检测到的数值决定的。为此,须先编写一段如下图6-6所示的程序代码:

图6-6 检测光线或声音强度的程序代码

 

试一试:

把光线传感器连接到A0端口,编写如图6-6所示的程序代码,并编译下载到智能小车中运行,检测不同环境下的光线亮度值,记录到如图6-7所示的表格中。

图6-7 不同环境下检测到的光线亮度值记录表

通过分析表格中的数值,你发现了什么?你认为光线传感器的取值范围可能是怎么样的?目前环境下,光线强度的临界值取多少最为合适?

 

第二步:测到强光加速行驶

从图6-7所示的记录表中可以看出,光线越强,亮度值越大。因此当光线传感器检测到的亮度值大于临界值时,就可认定智能小车遇到了强光,立即加速行驶。编程时,可以用“如果……那么……”指令实现。但考虑到智能小车在非强光照射下要保持正常行驶,因此改用“如果……那么……否则……”指令。具体可以按以下步骤编程:

首先拖动“控制”模块中的“如果……那么……否则……”指令到脚本区,和“好好搭搭硬件程序”组合在一起。

然后拖动“数字和逻辑运算”模块中的“大于”指令到“如果……那么……否则……”指令的条件判断框内。

接着把“读模拟口”指令拖放到“大于”指令的第一个参数框内,并在第二个参数框内输入测得的亮度临界值。

最后添加一个“重复执行”和两个“设置双电机”指令,设置相关参数,让智能小车不断地进行检测、判断,并在条件满足时快速向前行驶。具体程序代码如下图6-8所示:

图6-8 小车测到强光加速行驶的程序代码

 

想一想:

运行如图6-8所示的程序代码,智能小车在没有强光照射时能减速行驶吗?为什么?除如图6-8所示的程序代码外,还可以怎么编写?

 

第三步:自然光照正常行驶

要让智能小车在自然光照时以正常速度行驶,需在如图6-8所示程序代码的基础上添加两个“设置双电机”指令,并将电机输出参数设置为小于255的值(比如150)。具体程序代码如下图6-9所示:

图6-9 本课范例作品的完整程序代码

 

想一想:

要让智能小车在遇到强光时,加速行驶;在自然光照下,正常行驶;遇到黑暗环境时,停止行驶。流程图该如何调整?程序代码又该怎么修改?

 

练一练:

把声音传感器连接到A1端口,将“读模拟口”指令中的参数修改为A1,重新编译下载程序到智能小车中运行,检测不同环境下的声音响度值,并记录到如图6-10所示的表格中。

图6-10 不同环境状态下检测到的响度值记录表

通过分析表格中的数值,你发现了什么?

 

拓展与思考

综合运用本课所学知识,设计一辆敏捷的智能小车:当遇到强光时,智能小车加速前行,并亮起双跳灯;在自然光照下,如果检测到响声,智能小车就停止行驶,否则以正常速度前行。