Page Title

第10课 在Arduino中使用舵机——会摇头的电风扇


2019-07-31 15:47:04

 

blob.png

 

很多电风扇、特别是台式电风扇的风扇叶都会左右摆动,俗称“摇头电风扇”。这种结构的电风扇吹出的风更自然、使人感觉更舒适。本课我们将在上一课所制作的“智能小风扇”作品基础上,为电风扇增加风扇叶左右摆动功能。

 

blob.png

 

要制作本课的范例作品,需要使用以下新的硬件模块:

舵机模块


舵机,也叫做伺服电机,是一种可以把接收到的电信号转换成精确旋转角度的电机。海模爱好者经常用这种电机来控制模型船的方向舵,所以约定俗成地都叫它“舵机”(如下图10-1所示)。


blob.png


10-1 舵机模块

标准的舵机有3条控制线,分别是棕色的接地线(简称GND)、红色的电源线、橙色的信号线。

Arduino套件中的舵机附送了“十字形”、“一字形”、“半一字形”这三种不同形状的摆臂,还有将摆臂固定到舵机上的一颗小螺丝、将舵机固定到结构件上的两颗大螺丝。

 

要制作本课的范例作品,还需要使用以下新的指令:

blob.png

使用“设置舵机角度”指令可以设置指定端口舵机的输出角度。指令默认端口是“2”、输出角度是90度;通过单击第一个参数的下拉列表,选择舵机与扩展板连接的端口号;通过单击第二个参数下拉列表选择舵机输出角度,也可以直接输入,舵机角度的取值范围是(0180

 

blob.png

 

要制作本课的范例作品,需要使用以下器材:

²  UNO主控板和配套的扩展板

²  130电机模块:一个

²  风扇叶:一个

²  舵机模块:一个

 

第一步:连接硬件、运行插件                        


要搭建本课的范例作品硬件,可以按以下步骤操作:

      1.    将UNO扩展板插入到UNO主控板上。

2.      由于舵机没有使用Arduino连接线,因此插的时候可以查看主控板数字端口“2”边上的字母标识,确保棕色连接线对准“G”、红色连接线对准“V”、橙色连接线对准“TX

3.      130电机白色接口插入扩展板的MA接口,并将风扇叶安装到130电机的转头上。

4.      选择“十字形”的摆臂,用小螺丝将摆臂固定在舵机上;

5.      用固定绳将电机和摆臂固定在一起。

具体器材连接方式如下图10-2所示:

blob.png

 

10-2 “智能声控灯”范例作品硬件连接图

6.      USB线把主控板和计算机连接起来,打开“好好搭搭硬件下载”插件,选择“型号”为“UNO”,确认插件程序左下角的端口和型号显示正确。

 

 

第二步:校正舵机的旋转角度                       


登录“好好搭搭”网站,选择“创作”栏目中的“Arduino模板”,进入“Arduino编程设计页”进行编程。

舵机装上摆臂、第一次使用之前,最好先校正一下它的角度。可以使用“重复执行”指令,重复执行“设置舵机输出角度”指令,设置这个指令的参数为“0”(具体程序代码如下图10-3所示),这时舵机的方向应该是“0°。


blob.png


由于本课范例作品使用的是“一字型”摆臂,0°状态正好和舵机垂直(如上图10-4所示),如果安装的时候角度不正确,可以旋松固定摆臂的螺丝,重新安装。

 

blob.png

上图10-3所示代码中,请你再设置其它的舵机输出角度值,然后编译、下载到主控板上执行程序,观察舵机实际指向的角度,你发现了什么?

 

 

我发现:________________________________________________________________

_______________________________________________________________________

 

第三步: 控制舵机顺时针旋转                      


要控制舵机顺时针旋转,也就是角度值从0°依次递增到180°,可以按以下步骤操作:

1.      单击“数据”类别中的“新建变量”按钮,新建变量“jiaodu”。

1.      添加“重复执行”指令,重复执行“将变量设定为”和“重复执行直到条件成立”指令;确认“将变量设定为”指令第一个参数是“jiaodu”、第二个参数是“0”。

2.      设置“重复执行直到条件成立”指令的条件为“jiaodu”变量“等于”“180”或者“jiaodu”变量“大于”“180”。

3.      设置“重复执行直到条件成立”指令条件成立时执行“设置舵机输出角度”、“将变量值增加”和“等待”指令;设置舵机输出角度值为“jiaodu”变量,确认“将变量值增加”指令第一个参数是“jiaodu”、第二个参数是“1”,设置“等待”指令参数为“0.1”秒。

具体程序代码如下图10-5所示:


blob.png


10-5 “控制舵机顺时针旋转”程序代码

blob.png

上图10-5所示程序中,重复执行的这段脚本叫做“当”循环。它可以一边重复执行、一边进行判断,一直到“jiaodu”变量值大于、等于180这个条件成立,才停止重复执行;反之也就是说,“jiaodu”变量值小于180时,舵机会一直顺时针旋转、累加角度值。

下图10-6所示的程序也可以控制舵机顺时针旋转,但它使用的是“重复执行指定次数”指令。想一想,这两段程序脚本有什么不同?你喜欢哪一段脚本?为什么?


 blob.png


10-6 “控制舵机顺时针旋转”程序代码二

我发现:________________________________________________________________

_______________________________________________________________________

 

 

第四步:控制舵机180°来回旋转                  


要让舵机180°来回旋转,也就是角度值从0°依次递增到180°,再从180°依次递减到0°,可以使用两次“重复执行直到条件成立”指令。第一次是旋转、累加角度值;第二次是旋转、累减角度值。具体的程序代码如下图10-7所示:


blob.png


10-7 “控制舵机180°来回旋转”程序代码

blob.png

上图10-7所示程序代码中,每个“重复执行直到条件成立”指令里面都有一个“等待”指令。试一试删除这个指令,舵机还能够正常来回旋转吗?为什么?

 

我发现:________________________________________________________________

_______________________________________________________________________

 

第五步: 会摇头的电风扇                      


要让风扇一边摇头、一边扇,应该先把装有风扇叶的电机固定到舵机的一字形摆臂上(建议用胶枪固定),然后修改上图10-7所示的程序,在顺时针和逆时针旋转的重复执行代码中,分别添加两个“设置电机输出”指令。具体程序代码如下图10-8所示:


blob.png


10-8 “会摇头的电风扇”程序代码

 

blob.png

10-8所示的程序,编译、下载到主控板上会马上运行。能不能再添加红外遥控的代码,只有按遥控器上的“OK”按键,风扇才会运行

 

 

 

blob.png

 

请进一步完善程序,让红外遥控器不仅能够控制风扇开、关,还能够控制风扇的转速。

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________