第7课 遥控智能小车

情境描述

用遥控器控制小车前进、后退、左转弯、右转弯和停止,将会使小车行驶的轨迹更加自由多变。本节课,就让我们一起来设计一辆遥控智能小车(如下图7-1所示)。

图7-1 "遥控智能小车"范例作品示意图

 

知识概念

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

红外遥控器

红外遥控器是一种无线发射装置,每一个按键信息都是通过现代的数字编码技术进行编码的,主要用于远程控制机械设备。红外遥控器发射部分的主要元件为红外发光二极管。好好搭搭智能小车套件中的红外遥控器如下图7-2所示:

图7-2 好好搭搭智能小车套件中的红外遥控器

 

红外接收模块

红外接收模块,又称红外接收头,主要用于接收红外遥控器发出的信号。好好搭搭智能小车套件中的红外接收模块(如下图7-3)已集成在主控板上。

图7-3 好好搭搭智能小车套件中的红外接收模块

 

除具备红外遥控器和红外接收模块外,要完成遥控智能小车的设计,还需了解以下指令:

通过这个指令可以读取“红外接收模块”接收到的信号值。在实际应用中,这个指令不能单独使用,一般仅作为其他指令的一个参数值。

 

这个指令中的参数值一一对应着遥控器上的相应按键。通过单击指令的下拉列表,用户可以方便地选择所需的按键,而不必刻意记住每个按键的键值。编程时,这个指令也不能单独使用,一般只作为其他指令的一个参数值而已。

 

作品制作

遥控智能小车在接收到遥控器“ok”按键发射的红外线时,停止行驶。接收到“向上”、“向下”、“向左”、“向右”按键发射的红外线时,则分别执行前进、后退、左转弯、右转弯等行驶动作。具体可以按以下步骤创作:

第一步:测一测遥控器键值

遥控器上的每一个按键,都有一个相应的键值。运用红外接收模块和数码管显示程序(如图7-4所示),可以方便地获取遥控器上各按键的键值。

图7-4 在数码管上显示遥控器按键值的程序代码

 

练一练:

把数码管连接到C0端口,编写如图7-7所示的程序代码,并编译下载到智能小车中运行,测一测遥控器上各按键的值,记录到如图7-8所示的表格中。

图7-5 遥控器上的各按键值记录表

 

第二步:判断读取的红外值

在用遥控器控制智能小车行驶时,需要将智能小车实时读取的红外值和已知键值进行比较。如果两个值相等,那么智能小车执行相应的指令。具体可以按以下步骤编程:

首先创建一个存储红外值的变量,在计算机内存中开辟一块存储空间,如ir。

然后拖动“数据”模块中的“将ir设定为”指令到脚本区,和“好好搭搭硬件程序”组合在一起,并将“更多模块”中的“读取红外值”指令拖放到参数框中。

接着拖动“控制”模块中的“如果……那么……”指令到“将ir设定为读取红外值”指令下方并组合在一起;拖动“数字和逻辑运算”模块中的“等于”指令到“如果……那么……”指令的判断框内,并把“数据”模块中的变量“ir”拖放到“等于”指令的第一个参数框内,同时在第二个参数框内输入已测得的键值,如119(遥控器上的“向上”按键的键值)。

最后拖动“控制”模块中的“重复执行”指令到“好好搭搭硬件程序”下方,将刚添加的指令都包含在内。具体程序代码如下图7-6所示:

图7-6 判断实时读取的红外值的程序代码

 

想一想:

如果把图7-6所示程序代码中的键值“119”改为“红外按键值”指令,智能小车还能照常行驶吗?

 

第三步:创建、调用功能块

在“更多模块”中有一个“新建功能块”按钮。通过这个按钮新建的功能块可以把相关的指令有序地组合在一起,以完成一个动作或展示一种效果。在程序中运用功能块,主要可以方便阅读和调试。功能块的创建和调用可以按以下步骤操作: 首先单击“更多模块”类别中的“新建功能块”按钮(如下图7-7所示)

图7-7 单击"新建功能块"操作示意图

然后在“New Block”对话框中输入功能模块的名称并单击“确定”按钮。注意:功能模块的名称尽量通俗易懂,且不能使用中文(如下图7-8所示)

图7-8 创建功能块名称的操作示意图

接着在脚本区的“定义qianjin”功能块下方添加让智能小车前进的相关指令(如7-9左图所示)

图7-9 让智能小车前进的功能块定义及调试示意图

最后把定义好的功能模块“qianjin”拖放到“如果……那么……”指令中。这样,定义好的功能模块“qianjin”就被成功调用了(如7-9右图所示)

 

试一试:

运用已掌握的知识技能,创建后退、左转、右转、停止等功能模块,并在合适的位置调用相应的功能模块,编译下载到智能小车中运行。使智能小车在遥控器上的“↑”、“↓”、“←”、“→”、“ok”键被按下时,能执行相应的前进、后退、左转、右转和停止等动作。

 

拓展与思考

除了前进、后退、左转、右转和停止动作外,遥控器还能指挥智能小车实现哪些功能呢?请你综合运用前面所学知识,充分发挥想象,设计一辆酷炫的遥控智能小车吧。