一种控制呼吸灯呼吸效果的方法与流程

文档序号:11254692阅读:3895来源:国知局
一种控制呼吸灯呼吸效果的方法与流程

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



背景技术:

呼吸灯被广泛应用于数码产品,手机、电脑、音响、汽车等各个领域,起到很好的视觉装饰效果与状态提示作用。呼吸灯的实现可以通过纯粹的硬件电路来完成,也可以通过单片机编程更加灵活的控制其呼吸效果。用单片机控制呼吸灯的呼吸效果,其原理是通过控制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占空比数据,单片机按照一定的时间依次轮流调用上述产生的数据,从头到尾不停循环即可实现对应高斯曲线的呼吸效果。与传统经验值法中,通过增加,删除,修改其中的某些数据来改变呼吸效果相比,此呼吸灯的呼吸节奏可以通过高斯曲线的形状来观察,调整而通过曲线的办法,可以预先定义出曲线的形状,来感知呼吸的效果,而且形式多样化。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1