用遥控器控制小车前进、后退、左转弯、右转弯和停止,将会使小车行驶的轨迹更加自由多变。本节课,就让我们一起来设计一辆遥控智能小车(如下图7-1所示)。
![1576143851841961.png blob.png](/ueditor/php/upload/image/20191212/1576143851841961.png)
图7-1 “遥控智能小车”范例作品示意图
要制作本课的范例作品,除小车外,还需具备以下硬件模块:
红外遥控器是一种无线发射装置,每一个按键信息都是通过现代的数字编码技术进行编码的,主要用于远程控制机械设备。红外遥控器发射部分的主要元件为红外发光二极管。好好搭搭智能小车套件中的红外遥控器如下图7-2所示:
![1576143862836463.png blob.png](/ueditor/php/upload/image/20191212/1576143862836463.png)
图7-2 好好搭搭智能小车套件中的红外遥控器
红外接收模块,又称红外接收头,主要用于接收红外遥控器发出的信号。好好搭搭智能小车套件中的红外接收器(如下图7-3)已集成在主控板上。
![1576143873259372.png blob.png](/ueditor/php/upload/image/20191212/1576143873259372.png)
图7-3智能小车主控板上集成的红外接收器
除具备红外遥控器和红外接收模块外,要完成遥控智能小车的设计,还需了解以下指令:
![1576143885999295.png blob.png](/ueditor/php/upload/image/20191212/1576143885999295.png)
通过这个指令可以读取“红外接收模块”接收到的信号值。在实际应用中,这个指令不能单独使用,一般仅作为其他指令的一个参数值。
这个指令中的参数值一一对应着遥控器上的相应按键。通过单击指令的下拉列表,用户可以方便地选择所需的按键,而不必刻意记住每个按键的键值。编程时,这个指令也不能单独使用,一般只作为其他指令的一个参数值而已。
遥控智能小车在接收到遥控器“ok”按键发射的红外线时,停止行驶。接收到“向上”、“向下”、“向左”、“向右”按键发射的红外线时,则分别执行前进、后退、左转弯、右转弯等行驶动作。具体可以按以下步骤创作:
遥控器上的每一个按键,都有一个相应的键值。运用红外接收模块和数码管显示程序(如图7-4所示),可以方便地获取遥控器上各按键的键值。
图7-4 在数码管上显示遥控器按键值的程序代码
| 把数码管连接到C0端口,编写如图7-7所示的程序代码,并编译下载到智能小车中运行,测一测遥控器上各按键的值,记录到如图7-8所示的表格中。 |
|
![1576143943159311.png blob.png](/ueditor/php/upload/image/20191212/1576143943159311.png)
图7-5 遥控器上的各按键值记录表
在用遥控器控制智能小车行驶时,需要将智能小车实时读取的红外值和已知键值进行比较。如果两个值相等,那么智能小车执行相应的指令。具体可以按以下步骤编程:
首先创建一个存储红外值的变量,在计算机内存中开辟一块存储空间,如ir。
然后拖动“数据”模块中的“将ir设定为”指令到脚本区,和“好好搭搭硬件程序”组合在一起,并将“更多模块”中的“读取红外值”指令拖放到参数框中。
接着拖动“控制”模块中的“如果……那么……”指令到“将ir设定为读取红外值”指令下方并组合在一起;拖动“数字和逻辑运算”模块中的“等于”指令到“如果……那么……”指令的判断框内,并把“数据”模块中的变量“ir”拖放到“等于”指令的第一个参数框内,同时在第二个参数框内输入已测得的键值,如119(遥控器上的“向上”按键的键值)。
最后拖动“控制”模块中的“重复执行”指令到“好好搭搭硬件程序”下方,将刚添加的指令都包含在内。具体程序代码如下图7-6所示:
![1576143953308261.png blob.png](/ueditor/php/upload/image/20191212/1576143953308261.png)
图7-6 判断实时读取的红外值的程序代码
| 如果把图7-6所示程序代码中的键值“119”改为“红外按键值”指令,智能小车还能照常行驶吗? |
|
在“更多模块”中有一个“新建功能块”按钮。通过这个按钮新建的功能块可以把相关的指令有序地组合在一起,以完成一个动作或展示一种效果。在程序中运用功能块,主要可以方便阅读和调试。功能块的创建和调用可以按以下步骤操作:
首先单击“更多模块”类别中的“新建功能块”按钮(如下图7-7所示)
![1576143964873230.png blob.png](/ueditor/php/upload/image/20191212/1576143964873230.png)
图7-7 单击“新建功能块”操作示意图
然后在“New Block”对话框中输入功能模块的名称并单击“确定”按钮。注意:功能模块的名称尽量通俗易懂,且不能使用中文(如下图7-8所示)
![1576143979322566.png blob.png](/ueditor/php/upload/image/20191212/1576143979322566.png)
图7-8 创建功能块名称的操作示意图
接着在脚本区的“定义qianjin”功能块下方添加让智能小车前进的相关指令(如7-9左图所示)
最后把定义好的功能模块“qianjin”拖放到“如果……那么……”指令中。这样,定义好的功能模块“qianjin”就被成功调用了(如7-9右图所示)
![1576143991165562.png blob.png](/ueditor/php/upload/image/20191212/1576143991165562.png)
图7-9 让智能小车前进的功能块定义及调试示意图
| 运用已掌握的知识技能,创建后退、左转、右转、停止等功能模块,并在合适的位置调用相应的功能模块,编译下载到智能小车中运行。使智能小车在遥控器上的“↑”、“↓”、“←”、“→”、“ok”键被按下时,能执行相应的前进、后退、左转、右转和停止等动作。 |
|
除了前进、后退、左转、右转和停止动作外,遥控器还能指挥智能小车实现哪些功能呢?请你综合运用前面所学知识,充分发挥想象,设计一辆酷炫的遥控智能小车吧。
我设计的“酷炫遥控智能小车”能实现____________________________________等功能。相应的程序保存在“好好搭搭”网站上,名称是_________________。将作品共享了以后,有____人给我点赞;综合别人给我提的建议,我认为还可以在以下方面进行改进:_______________________________________________________________________________
_______________________________________________________________________________。