本发明涉及一种控制呼吸灯呼吸效果的方法,尤其涉及一种利用函数曲线控制呼吸灯呼吸效果的方法。

背景技术:

呼吸灯被广泛应用于数码产品,手机、电脑、音响、汽车等各个领域,起到很好的视觉装饰效果与状态提示作用。呼吸灯的实现可以通过纯粹的硬件电路来完成,也可以通过单片机编程更加灵活的控制其呼吸效果。用单片机控制呼吸灯的呼吸效果,其原理是通过控制PWM的占空比来完成对LED亮度的控制,PWM的占空比按照一定的规律变化就可以做出呼吸的效果。而呼吸灯呼吸时所需要的PWM占空比数据,目前都是靠经验值来给出的,未找到一套便捷直观的数据生成方法。经验值的办法是通过增加,删除,修改其中的某些数据来改变呼吸效果,不具有可预见性。

因此,现有技术有待改进。

技术实现要素:

针对上述现有技术中存在的问题,本发明的目的在于提供一种控制呼吸灯呼吸效果的方法,旨在克服现有呼吸灯呼吸节奏控制方法不可预见性的缺陷。

本发明的技术方案如下:

一种控制呼吸灯呼吸效果的方法,其中,包括以下步骤:

(1)利用制图软件生成一条曲线,对曲线进行采样,把采样点值取整后有序的放入到一个数组CurDat里,定义到单片机程序里,供定时器中断处理函数调用;

(2)单片机上电后,对定时器进行初始化,设置开启定时器的溢出中断,设置定时器预装载值,同时设置计数频率,确定PWM的输出频率,并配置PWM输出功能;

(3)开启定时器,在定时器溢出中断处理函数里设置,每当中断到来,都会把CurDat当前索引下的数组值赋给通道比较寄存器CCR,使定时器输出的PWM占空比与CurDat里的索引值呈对应关系;如果索引值为数组CurDat的最后一个值,把索引值清零,指向数组的开始;否则索引值加一指向数组的下一个值。

所述的控制呼吸灯效果的方法,其中,步骤(2)中,设置定时器预装载的值为所述曲线在采样范围内的最大值。

所述的控制呼吸灯效果的方法,其中,步骤(1)中所述的制图软件为Matlab或者Origin。

所述的控制呼吸灯效果的方法,其中,步骤(1)中所述曲线为正态分布曲线,所述采样点关于正态分布曲线的对称轴对称。

所述的控制呼吸灯效果的方法,其中,步骤(1)中所述曲线为高斯曲线,其函数方程式为:。

所述的控制呼吸灯效果的方法,其中,步骤(2)中,设置定时器预装载的值为A,定时器的计数频率为100A,使定时器每10ms溢出一次,PWM的输出频率为100Hz。

所述的控制呼吸灯效果的方法,其中,所述高斯曲线中,A=1,,为0.5、4或8。

所述的控制呼吸灯效果的方法,其中,步骤(1)中,在曲线横坐标-10到10的范围内进行200个点的采样。

所述的控制呼吸灯效果的方法,其中,所述单片机的型号是STM32F1系列,采用定时器TIM4中的溢出中断和定时器的PWM输出功能。

本发明的有益效果为:本发明提供一种控制呼吸灯呼吸效果的方法,利用制图软件,用户可以自定义函数及相关参数,生成对应形状的曲线,再通过适当的采样来产生呼吸灯呼吸时所需要的PWM占空比数据,把索引对应上述曲线的横坐标值,PWM占空比按照一定的比例关系对应曲线的纵坐标值,此时定时器输出的PWM占空比与上述曲线形状相似。单片机按照一定的时间依次轮流调用上述产生的数据,从头到尾不停循环即可实现对应曲线的呼吸效果。即通过观察和调整曲线的形状实现对呼吸灯的呼吸节奏的控制,可以预先定义出曲线的形状,来感知呼吸的效果,而且形式多样化。

附图说明

图1为本发明实施例中A=1,,分别为0.5、4、8时的三条高斯曲线。

图2为本发明实施例的步骤流程图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。

本实施例涉及一种控制呼吸灯呼吸效果的方法,其特征在于,包括以下步骤:

(1)利用制图软件生成一条曲线,对曲线进行采样,把采样点值取整后有序的放入到一个数组CurDat里(索引即数组的索引,为采样点的横坐标值,索引到的数组值为对应取整后的纵坐标值),定义到单片机程序里,供定时器中断处理函数调用;

(2)单片机上电后,对定时器进行初始化,设置开启定时器的溢出中断,设置定时器预装载的值和计数频率,确定PWM的输出频率,并配置PWM输出功能;

(3)开启定时器,在定时器溢出中断处理函数中设置,每当中断到来,都会把CurDat当前索引下的数组值赋给通道比较寄存器CCR,使定时器输出的PWM占空比与CurDat里的索引值呈对应关系;如果索引值为数组CurDat的最后一个值,把索引值清零,指向数组的开始;否则索引值加一指向数组的下一个值。

上述方法利用制图软件,用户可以自定义函数及相关参数,生成对应形状的曲线,再通过适当的采样来产生呼吸灯呼吸时所需要的PWM占空比数据,单片机按照一定的时间依次轮流调用上述产生的数据,从头到尾不停循环即可实现对应曲线的呼吸效果。即通过观察和调整曲线的形状实现对呼吸灯的呼吸节奏的控制,可以预先定义出曲线的形状,来感知呼吸的效果,而且形式多样化。

作为优选的实施例,所述的控制呼吸灯效果的方法,步骤(2)中,设置定时器预装载值为所述曲线在采样范围内的最大值。由于定时器输出的PWM占空比=通道比较寄存器CCR值/预装载寄存器ARR值,因此,将定时器预装载值设置为曲线在采样范围内的最大值时,输出PMW占空比不会超过100%。

实际应用中,可选择现有的多种制图软件生产曲线,比如Matlab或者Origin,而为了让呼吸灯的“呼”和“吸”对称,一般选用类似正态分布的曲线,比如正余弦曲线、高斯曲线等,且所述采样点关于正态分布曲线的对称轴对称。本实施例选用制图软件为Matlab生成高斯曲线为例进行说明,具体如何通过函数曲线控制呼吸灯呼吸效果的。

高斯曲线是正态分布中的一条标准曲线,是一个钟状的对称曲线,函数表达式如下:

其中,A表示曲线的峰值,表示曲线的中心位置,表示曲线的宽度,图1所示为A=1,,分别为0.5、4、8时的三条曲线。如果横轴表示时间t,纵轴表示归一化的LED亮度值,从上面的三条曲线可以判断出LED灯的呼吸效果:相对,呼吸灯的呼吸要急促一些,而时的呼吸比较缓慢,非常直观。

本发明以A=1,为例进行说明。利用单片机程序控制PWM的占空比来控制LED的呼吸效果;单片机型号是STM32F103RBT6,用到定时器TIM4中的溢出中断和PWM输出功能。定时器每隔10ms产生一次溢出中断来改变PWM输出的占空比。

如图2所示,首先用Matlab软件生成一条高斯曲线,其对应的函数表达式为:;在曲线横坐标为-10到10的范围内采集200个点,然后把采样点值(采样点对应的纵坐标值)取整后有序的放入到一个无符16位的数组CurDat里,定义到单片机程序里,供定时器中断函数调用。需要说明的是:取的点数会影响呼吸的流畅效果,越多越顺畅,平滑,本实施例中采样范围取-10到10是为了保证两端的采样点对应的纵坐标值接近0,从而确保对应输出的PWM占空比也接近0,相当于呼吸灯熄灭时的状态。

单片机上电后,对定时器进行初始化,设置开启定时器的溢出中断,设置定时器预装载的值为A,定时器的计数频率为100A,这样定时器每10ms溢出一次,即PWM的输出频率为100Hz(定时器的溢出频率为定时器的计数频率100A除以预装载寄存器的值A),并配置PWM输出功能,开启定时器,每隔10ms就会执行一次溢出中断处理函数。

在中断处理函数里,把CurDat当前索引下的数组值赋值给通道比较寄存器CCR,此时定时器输出的PWM占空比为CCR/A(≤100%),对应归一化高斯曲线上采样点值,如果索引值为数组CurDat的最后一个值,把索引值清零,重新指向数组CurDat的开始;否则索引值指向数组的下一个值,即索引值+1。本实施例中,CurDat里共有200个数据,而每10ms读取一个,因此一次呼吸的时间为2s。

综上所述,本实施例通过Matlab软件根据用户自定义参数,生成对应形状的高斯曲线,再通过适当的采样来产生呼吸灯呼吸时所需要的PWM占空比数据,单片机按照一定的时间依次轮流调用上述产生的数据,从头到尾不停循环即可实现对应高斯曲线的呼吸效果。与传统经验值法中,通过增加,删除,修改其中的某些数据来改变呼吸效果相比,此呼吸灯的呼吸节奏可以通过高斯曲线的形状来观察,调整而通过曲线的办法,可以预先定义出曲线的形状,来感知呼吸的效果,而且形式多样化。

以上对本发明进行了详细的介绍,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

matlab 呼吸灯,一种控制呼吸灯呼吸效果的方法与流程相关推荐

  1. matlab 功率分配,一种基于遗传算法的NOMA功率分配方法与流程

    本发明涉及一种基于遗传算法的NOMA功率分配方法,属于无线通信技术领域. 背景技术: 随着移动互联网应用的发展,移动数据流量和终端连接数也呈爆炸式增长,未来全球移动通信网络连接的设备总量将达到千亿规模 ...

  2. JMeter-两种控制Sampler执行线程数量的方法

    JMeter-两种控制Sampler执行线程数量的方法 一.如果(If)控制器 (1)添加"如果(If)控制器",并在控制器中填写判断语句: ${__groovy(${__coun ...

  3. 一种快速制作立体渲染效果地形图方法

    概述 制作立体渲染地形图的方法网上有很多,常见的方法就是在ArcToolbox中使用山体阴影工具制作山体阴影,再调整透明度,这里给大家介绍另外一种方法,该方法更加的快速. 数据来源 本教程所使用的数据 ...

  4. spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程

    本发明涉及数据库 技术领域: :,具体来说,涉及一种Spark并行访问MPP数据库的方法. 背景技术: ::从关系数据库读取数据,Spark可以使用DataFrame和JdbcRDD等方法.这些方法在 ...

  5. 单片机c语言 流水灯 教案,单片机控制流水灯讲课教案.doc

    单片机控制流水灯 前言 随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁.LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市 ...

  6. 帕德逼近matlab算法,一种基于帕德逼近的通信误差函数逼近方法与流程

    本发明属于通信与电子信息技术领域,具体是属于计算机仿真领域,涉及一种基于帕德逼近的通信误差函数逼近方法. 背景技术: 在通信领域,通信误差高斯Q函数在数字调制方案的符号错误概率(SEP).加性高斯白噪 ...

  7. 风电功率预测matlab,一种基于二十四节气的风电功率预测方法与流程

    本发明属于风电场技术领域,尤其涉及一种基于二十四节气的风电功率预测方法. 背景技术: 风能的随机波动性对电网产生的较大冲击给风电产业的发展带来了巨大挑战.目前风电功率预测误差较大,数值天气预报精度.训 ...

  8. Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...

    本发明属于汽车系统动力学仿真技术领域,特别是一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法. 背景技术: 汽车系统动力学仿真技术是汽车设计制造中一项不可或缺的技术,尤其是在汽车操纵稳 ...

  9. matlab正负序分离模块,一种自适应宽频带正负序分离方法与流程

    本发明涉及电力系统并网控制领域,尤其涉及一种自适应宽频带正负序分离方法. 背景技术: 三相并网变流器在电力系统中得到了广泛应用,而三相并网变流器的控制需要检测电网电压同步信号,即基波电压的频率.幅值. ...

  10. 误码率与信噪比的关系matlab,一种误码率和信噪比关系的分析方法与流程

    本发明涉及数字通信技术领域,特别涉及一种误码率和信噪比关系的分析方法. 背景技术: 误码率(BER,Bit Error Rate)是衡量数据在规定时间内数据传输精确性的指标.误码率=传输中的误码/所传 ...

最新文章

  1. 【C#】枚举_结构体_数组
  2. 将Nodelist快速转换为Array数组
  3. 阿里员工发帖吐槽人不如驴:你不能一边抽我,一边问我爱不爱你?
  4. Flex值得一看参考资源
  5. margin:0 auto;不能居中的原因
  6. Po校园接入云信,多机位“有毒”直播燃爆LIVE
  7. SAP Vim和ABAP Editor的个人设置
  8. 漫步凸分析八——回收锥与无界
  9. 量子计算机概念谁提出来,目前的量子计算机从根本上来说是一个伪概念
  10. 输入框值不能赋值成功
  11. WinDBG中设置条件断点
  12. java项目中build path的设置
  13. git如何添加远程主机_Git由浅入深之远端主机(git remote)
  14. 《PMBOK第六版》章节知识点
  15. link标签 rel=“ alternate“ 应用解析
  16. html设置背景颜色宽度,如何设置div的背景色和高度 CSS示例代码
  17. 计算机切换用户界面键,电脑如何切换屏幕_电脑怎么切换另一个界面快捷键
  18. 51单片机——74HC573锁存器
  19. Linux初级运维+系统服务搭建(一)linux文件系统根目录详解
  20. seo伪原创文章优化(怎么找可以做伪原创的文章)

热门文章

  1. vulhub nginx insecure-configuration
  2. 统信操作系统 摄像头驱动程序
  3. PHP傻瓜式一键建站系统源码+无需授权
  4. leaflet保存pm绘图geojson数据
  5. 遇到一个很冷门的bug(java.lang.NoSuchMethodException问题原因及解决办法)
  6. 三极管输出和输入特性曲线人类语言(共射为例)
  7. USB 3.0规范中译本 第7章 链路层
  8. excel单元格斜线_如何在Excel中使用斜线,并在表格的标题中使用单斜线或双斜线...
  9. 美国华盛顿警察局被敲诈勒索,怎样抵御新型勒索攻击?
  10. Pycharm导入已有的Project