电风扇曾经是很多家庭上个世纪八、九十年代最重要的消暑电器,拥有一台自己独自享用的电风扇是那个年代很多孩子梦想的礼物。本课我们将制作一个能够用红外遥控器控制的小风扇,甚至还可以为它加上其它的传感器,使得小风扇更智能。
要制作本课的范例作品,需要使用以下新的硬件模块:
红外遥控器是一种红外线发射装置。Nova套件中的红外遥控器有17个按键,除了0-9这十个数字以外,还包括四个方向键、“OK”键以及“*”、“#”键(如下图9-1所示)。红外遥控器每个按键都有对应的按键值,可以根据需要在程序中定义不同的功能。
红外接收模块一般与红外发射器一起使用,它能够接收发射器发射的红外线,然后将接收到的红外线信号转换为电信号,经过处理后还原为红外发射器发射的按键值(如上图9-2所示)。
在Nova套件中,红外遥控器和红外接收模块组成了一个完整的红外遥控系统。这类红外遥控方式在现实生活中几乎随处可见,比如绝大多数家庭都有的电视机、空调机,都采用了类似的红外遥控方式。
电机,也叫“马达”,是依据电磁感应原理将电能转换为机械能的一种装置,很多常用电器和机械的动力源都是各种各样的电机。
电机根据输入电源的不同,可以分为使用直流电的直流电机、使用交流电的交流电机。Nova套件中的130电机就是一种直流电机,能够将输入的直流电能转换为机械能,可以带动套件中的风扇叶旋转(如下图9-3所示)。
Nova主控板是不能直接控制电机的,必须通过电机驱动模块才可以控制电机运行、停止、调节转速。Nova入门套件中的电机驱动模块只能连接一个电机,因此叫做“单路电机驱动模块”(如上图9-4所示)。
要制作本课的范例作品,还需要使用以下新的指令:
使用这个指令可以读取指定端口红外接收模块的值。指令默认是“S0”;通过单击下拉列表,可以选择S0—S3这4个数字端口、A0—A3这4个模拟端口。
使用这个指令可以读取红外遥控器按键的值。指令默认是“OK”键;通过单击下拉列表,还可以选择0-9这十个数字键、四个方向键、以及“*”、“#”键。
使用这个指令可以设置指定端口电机的输出值。指令默认端口是“M0”、输出值是“150”;通过单击第一个参数的下拉列表,可以选择电机的连接端口M0—M3;通过单击第二个参数下拉列表或者直接输入,可以设置电机的输出值,它的取值范围是(-255,255)。
要制作本课的范例作品,可以按以下步骤先连接硬件、运行插件程序,然后进入“好好搭搭”网站编写、调试、编译、下载程序。
首先将模块与主控板连接起来:红外接收模块连接“S0”端口、数码管模块连接“C0”端口、单路电机驱动模块连接“M0”端口,将风扇叶安装到130电机的转头上、电机的连线插入单路电机驱动模块(如下图9-5所示);接着把主控板和计算机连接起来,最后打开“好好搭搭硬件下载”插件,确认插件程序显示“打开端口成功”。
图9-5 “智能小风扇”范例作品硬件连接图
登录“好好搭搭”网站,选择“创作”栏目中的“haohaodada_NOVA模板”,进入“NOVA编程设计页”进行编程。
要在数码管上显示红外接收模块接收到的值,可以使用“重复执行”指令,重复执行“数码管消除”、“数码管显示”及“等待”指令,再将“读红外值”指令作为“数码管显示”指令的显示数值参数。由于红外接收模块连接的是“S0”端口,因此就会在数码管上每隔“0.5”秒刷新显示红外接收模块接收到的数值。具体程序代码如下图9-6所示:
图9-6 “在数码管上显示红外接收模块接收到的值”程序代码
| 将上图9-6所示代码编译后下载到主控板上,然后按红外遥控器上的按键,观察数码管上显示的数值,思考以下问题: 1. 按一下红外遥控器的按键,数码管上一直会显示这个按键的数值吗?可能是什么原因? 2. 红外遥控器必须对准红外接收模块吗?如果不对准会怎么样? |
|
我发现:________________________________________________________________
要让风扇旋转起来,可以使用“电机输出”指令,具体程序代码如下图9-7所示:
图9-7 “让风扇旋转起来”程序代码
| 根据上图9-7所示代码,按下表要求分别修改电机输出值,编译后下载到主控板上,观察不同参数下风扇旋转的状态,最后将观察结果记录到表格中。 |
我发现:________________________________________________________________
_______________________________________________________________________
要用红外遥控器控制风扇旋转:按数字“1”键控制风扇比较慢的旋转、“2”键比较快旋转、“3”非常快旋转,可以按以下步骤编写程序:
1. 单击“数据”类别中的“新建变量”按钮,在打开的“新建变量”对话框中输入新变量的名称“Spd”,单击“确定”按钮完成新建变量。
2. 添加“重复执行”指令,重复执行“将变量设定为”和“如果…那么”指令;将“Spd”变量设定为“读红外值”指令的值;
3. 设置“如果…那么”指令的条件为“Spd”变量“等于”“红外按键值”;单击“红外按键值”指令的下拉列表,选择“IR_BUTTON_1”选项,也就是红外遥控器上的“1”按键。
4. 设置“如果…那么”指令条件成立时执行“电机输出”指令,设置电机输出值为“-100”。
5. 将“如果…那么”指令再复制三个,分别修改“红外按键值”指令的参数为“IR_BUTTON_2”、“IR_BUTTON_3”、“IR_BUTTON_0”,再分别修改“电机输出”指令的输出值为“-150”、“-255”、“0”。
具体的程序代码如下图9-6所示:
图9-6 “用红外遥控器控制风扇旋转”程序代码
| 可以不新建“Spd”变量,直接设置“读红外值”指令“等于”“红外按键值”指令吗? |
| 进一步修改程序,使得小风扇旋转的同时,数码管上能够显示相应的转速。比如显示比较慢的“1”档、比较快的“2”档以及非常快的“3”档。 |
除了使用红外遥控器控制风扇,你还能让风扇的控制更智能、使用更方便吗?
我打算这么做:_______________________________________________________
______________________________________________________________________。
做的时候需要注意:____________________________________________________
______________________________________________________________________。