呼吸光是指电子产品上的LED灯的亮度随时间从暗到暗逐渐增加,然后从暗到暗逐渐衰减,并且它们在节奏上是1伏特,就好像它们在呼吸一样,因此被广泛使用。
电子设备(例如手机和计算机)的指示灯。
也可以使用MCU将呼吸灯功能添加到相关应用产品的开发中,以增强用户体验。
本文将介绍如何使用MM32L0系列产品芯片来执行呼吸灯功能。
在普通应用中,您可以知道MCU的GPIO输出的高电平和低电平变化可以实现LED点亮和熄灭的两个过程。
如果GPIO电平一直保持在高电平或低电平,则LED灯将亮起或持续很长时间。
在关闭状态下,呼吸灯通过更高的频率级别变化来打开和关闭。
由于人类视觉的持久性,肉眼无法快速捕捉到快速变化的过程,因此它始终在视觉上处于开启或关闭状态。
在关闭状态下,可以通过调整占空比来控制LED灯的亮度,使人们看到的光从暗到亮逐渐增加,然后从亮到暗逐渐衰减。
正常成年人的吸气和呼气时间持续约3秒钟,即吸气时间(LED灯的亮度逐渐变亮)为1.5S,吸气和呼气的时间(LED灯的亮度)为1.5S。
逐渐变暗)是时间1.5S。
亮度逐渐变强,然后随时间衰减,这可以通过两种算术方法来实现:半周期正弦函数曲线和指数上升曲线以及对称的下降沿曲线。
指数法曲线图是控制LED灯达到呼吸灯的效果。
实际上,这是为了控制LED灯的亮度以适应呼吸特性曲线。
在本实验中,将使用指数上升曲线和对称下降沿曲线方法。
感兴趣的方法也可以尝试。
在本实验中,我们使用MM32L0输出更高频率的PWM信号,并通过调制信号的占空比来控制LED灯的亮度。
生成指数图的主要因素:TIMPeriod:定时器的计数周期,其值必须等于PWM表中的最大值(在应用程序中需要将分配减去1),并且将PWM表确定控制分辨率。
例如,当最大值为10时,PWM占空比在10个级别中仅精确到0.1;而当最大值为1000时,PWM占空比在1000个级别中精确到0.001。
在本实验中,计时器的计数周期值设置为255 + 1,即PWM表中的最大值也为256。
TIM_Prescaler:计时器时钟分频因子,它控制计时器CNT计数到所需的时间。
加1。
如果其值太大,将导致单个PWM波周期的输出太长,这将影响控制的动态特性。
例如,在控制LED灯时,如果该值太大,则LED灯的切换时间将变长,并且闪烁将很明显。
一般来说,值越小越好。
在此实验中,定时器时钟的分频因子设置为1757 + 1,即时钟频率除以1758。
PWM表中的点数:PWM表中的点数为拟合曲线的采样点数,即LED灯的亮度分为0-255级。
采样点越多,拟合曲线越好,并且采样点太少,可能会导致失真。
在此实验中,PWM表中的点数设置为40。
Period_class:周期倍数,即PWM表中每个元素的周期数,这会影响拟合曲线的周期。
在本实验中,将循环倍数设置为8。
该实验程序直接从MM32L073的定时器PWM输出程序中修改。
TIM3配置为递增计数,PWM通道输出也配置为当计数器CNT的值小于输出比较寄存器CCR1的值时,PWM通道输出低电平点亮LED灯。
在功能结束时,也会启用定时器中断,并且每次定时器的计数周期完成时都会产生一个中断。
通过中断服务功能,可以切换CCR1比较寄存器的值。
使用MM32L0系列MCU,以上两种方法可以实现呼吸灯功能。
GPIO的两种方法是PB4和PB5。
下载到MiniBoard。
您可以比较并测试t之间的差异