编制软件,完成“兴奋团扇”的制作!

第一次挑战制作!: 4 of 4

本期是电子制作入门“兴奋团扇”连载的最后一期。本期讲解如何编制结合心跳来驱动伺服马达的软件(程序),之后便大功告成了。让我们一起度过一个凉爽的夏天吧!

先来制作“流程图”吧!

在上期的“兴奋团扇”连载第三期中,我们已经组装了硬件。本期我们就来制作驱动这些硬件的软件(程序)吧。本期的制作中,我们所需要的动作是通过心跳传感器检测出心脏的“扑通扑通”跳动声,并据此来对伺服马达进行控制。此时的控制是指让团扇随着心脏的“扑通”跳动一次就使团扇“哗”的扇动一次。

为了使团扇扇动(扇起风),就必须使伺服马达以某个角度转动,之后再以同样的角度从反方向转动回来。由于本次使用的是小型伺服马达,为了不使其运行太过吃力而将转动角度设为30度。按照伺服马达的规格,使团扇移动30度大约需要0.1秒时间。

下面让我们来看心跳传感器的输出(图1)吧。图1的上部是平常时的心跳、下部是做轻微运动后的心跳(扑通扑通跳时)示意图。如图所示,无论上部还是下部都是在短时间内保持高电压、接着是持续较长时间的低电压区间,犹如山峰和山谷一样。这次我们将高电压区间(山峰)称作R区间,将低电压区间(山谷)称作非R区间。

为了使团扇随着心跳扇动,我们需要进行如下的动作控制,即使伺服马达在R区间转动30度,进入非R区间后使其往回转动30度。

图1:平常时(上部)和“扑通扑通”心跳时(下部)的心跳数据

图1:平常时(上部)和“扑通扑通”心跳时(下部)的心跳数据

从传感器的输出信号被输入到GR-SAKURA单片机搭载的A/D转换器中。如果该输入信号超过一定数值时就将其判断为R区间,并将驱动团扇的命令传送给伺服马达。在程序中,该数值被定义为“R_HEIGHT”常数。相反地,非R区间是指当输入的信号低于前述的“R_HEIGHT”常数时。此时,将发出使团扇反向转动的命令。

虽然通过区分R区间和非R区间便可使团扇振动,但我们还是再做些加工吧。当团扇向某个方向扇动时,其达到目标角度(即伺服马达停止运行)为止需要0.1秒时间。为了使团扇在扇动过程中不会发出使其反向运行的命令,我们必须进行如下设计,即从团扇开始扇动(即伺服马达开始运行)时起,在0.1秒钟内绝对“不发出任何指令”。

图2所示的是上述处理的流程图。通过此流程图,我们可以正确把握程序的流程,并可向其他人转述程序的内容。

以右边的流程为基础来描述(编程)“兴奋团扇”的程序(汇编前的源代码)。 本次连载中不对程序的语法等编写方法等进行说明,而是直接进入使对象运行的步骤。但是,制作程序并不是很难,所以请大家去试试看。

Program Flow for Heartbeat Fan

图1:“兴奋团扇”的运行流程图

使用操作简单的Web Compiler(编译器)及Library(程序库)来编程吧!

GR-SAKURA中,可使用Web编译器进行简单编程。让我们先来制作一个新工程并将之命名为“HeartBeatFan”吧。详情请参考本连载的第2期---《GR-SAKURA的启动》至《云端环境下的Web编译器准备》章节的内容

接下来导入GR-SAKURA中用于驱动伺服马达的程序(程序库)。点击Web编译器上部菜单中的“程序库” ,从选择画面中选择“gr_sakura_servo程序库”并导入(图3)。由此,便可在编译程序(源代码)时,链接到伺服马达的程序库,从而可编制成一体化的程序(工程代码)。另外,GR-SAKURA中还备有其他各种程序库,使用起来非常方便。

图3:简单导入伺服马达的程序库

图3:简单导入伺服马达的程序库

接下来开始进行编程吧。先点击Web编译器画面左侧部分的“gr_sketch.cpp” ,便会出现图4的画面。

被收录在“gr_sketch.cpp”中的初始源程序是使GR-SAKURA的LED等发亮的样本程序。编程是通过改写此源程序来进行的。请复制以上述流程为基础的源程序(复制、粘贴,或者手动输入)。此时, 先暂时保存内容。请点击Web编译器的保存键

接下来按下“build” 进行编译。如果不出现错误,将出现一个名为“sketch.bin”的文件(工程程序)。

图4:“gr_sketch.cpp”的程序

图4:“gr_sketch.cpp”的程序

Downloding scrtch.bin

图5:将“sketch.bin”下载到电脑中

为了使GR-SAKURA读取“sketch.bin”,所以先将其下载到电脑中。请选择“sketch.bin”后点击右键,并选择“下载(download)”(图5)。文件将被下载到浏览器指定的下载文件夹中。

接通GR-SAKURA和硬件的电源第一次挑战制作便大功告成!

接下来开始运行“兴奋团扇”吧!请参考本连载第3期的内容,确认硬件的组装情况。并按照电路图将GR-SAKURA和心跳传感器、实验电路板以及伺服马达进行连接(照片1)。

照片1:布线后的GR-SAKURA和实验电路板

照片1:布线后的GR-SAKURA和实验电路板

之后的操作顺序如下:

  • (1) 用USB线将GR-SAKURA与电脑连接(向GR-SAKURA供电)
  • (2) 将电池盒的电池扣连接到实验电路板(向实验电路板供电)

此时,为了防止伺服马达(由实验电路板供电)的误动作,应先接通GR-SAKURA的电源。电源的供给顺序是先给控制电脑(“GR-SAKURA”)供电,接下来再给外围设备(本期是实验电路板和伺服马达)供电,让我们在保证设备安全的前提下进行制作吧!

接下来,将已下载到电脑中的“sketch.bin” 文件拖到显示为驱动器图标的GR-SAKURA中。如果LED灯熄灭,且伺服马达运行的话则表明连接成功了。此时,就可将心跳传感器绑到指尖上了。无需将传感器绑得太紧,只需用魔术胶带轻卷传感器使多余的光不会泄露到传感器上即可。

在将传感器绑到指尖上,并决定团扇的放置位置(固定伺服马达)后,按一次蓝色按钮。接下来,LED灯便会随着你的心跳而闪烁,而团扇也将送来凉爽的风了。

欲停止时,按下GR-SAKURA的红色按钮。在拔下实验电路板的供电电源后,再拔下GR-SAKURA的USB线,便可使其完全停止了。停止时的断电顺序与供电顺序相反,先切断外围设备的电源。

怎么样?大家制作的团扇随着你的心跳扇动了吗?本期的程序还可自动随心跳的快慢运行(上限是120次/分钟)。

我们常能听到“虽然我也想挑战电子制作,但是好像很难呀……”这样的话。确实,以前面向入门者的解说缺乏,而且制作的门槛很高。但现在有了GR-SAKURA这样非常适合于电子制作的主板,而且还备有对于入门者来说最重要的“完善的技术支持”。所以请您也一定试试电子制作吧。

瑞萨电子制作了结合心跳使团扇振动的“兴奋团扇

视频: 我们制作了结合心跳使团扇振动的“兴奋团扇!

播放

GR-SAKURA中的程序被称为“涂鸦(sketch)” ,由启动时只被读取一次的函数“setup()” 和被多次调出的函数“loop()” 构成。

程序提示(1)

通过函数“setup()”可进行输入输出端口的设定、以及对A/D转换器的输入电压范围的设定等。本次制作的是使LED灯随着心跳而闪烁,所以输出地址上输入“LED0”,且为了通过蓝色键来通知动作开始而声明从“PIN_SW”开始输入。接着使伺服马达在开始位置(75度)停止后待机。按下蓝色键即可使程序进入下一步,并进入监视蓝色按键值的“循环(loop)”

程序提示(2)

通过函数“loop()” 可检测出心跳、并驱动团扇。这时使用两个函数。第一个是找出R区间的“rPulseDetect()”,另一个是找出非R区间的“nonRDetect()”。各个函数在找到目的区间(R区间或非R区间)后,再将找到为止所花费的大概时间“msec”返送回去。接收到返送的值后,通过“fanservo.write()”处理使伺服马达转动,再通过函数“delay()”来确定之后停止的固定时间。

hakase

电子制作入门“兴奋团扇”的连载共分4期,这4期连载对您有所帮助吗?能否让您感受到了很轻松地就可进行“制作电子”的乐趣呢?本期是本连载的最后一期。期待着在下次的“电子制作”中再与您相会。

第一次挑战制作!

  1. 考虑所需的功能!
  2. 看一看 摸一摸 准备制作
  3. 硬件组装
  4. 编制软件,完成“兴奋团扇”的制作!