呼吸灯就是指电子产品上的LED灯的亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,有节奏感地一起一伏,就像是在呼吸一样,因而被广泛应用于手机、电脑等电子设备的指示灯中。在使用MCU开发相关的应用产品中也可以加入呼吸灯功能,增强用户的体验感,本篇文章将介绍如何使用MM32L0系列产品芯片做呼吸灯功能。

在平时应用中可以知道,MCU的GPIO输出高低电平变化可以实现LED灯的亮、灭两个过程,如果GPIO的电平一直维持高电平或者低电平,LED灯就处于长亮或长灭的状态,呼吸灯就是通过较高频率的电平变化来实现亮灭的切换,由于人的视觉暂留效应,肉眼无法迅速捕捉快速亮灭变化的过程,所以在视觉中一直出现一直亮或者灭的状态,通过调整占空比可以控制LED灯的亮度,给人视觉上一种灯光由暗到亮逐渐增强,然后又由亮到暗逐渐衰减。

正常的成年人的吸气呼气时间整个过程持续大约3秒时间,即吸气时间(LED灯亮度逐渐变亮)时间为1.5S,吸、呼气时间(LED灯亮度逐渐变暗)时间为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,download到MiniBoard中,可以对比测试两种实现方法的差异性,选择合适的呼吸灯实现方式。

灵动微电子MM32L0系列芯片做呼吸灯功能相关推荐

  1. 电量百分百亮绿灯,其余充电电量均为红灯。电量低于15闪红灯三秒一次。搜网灯没网时候绿灯快闪,有网了做呼吸灯五秒一次,呼吸灯可广播控制打开关闭。判断是否连上网。

    frameworks/ base/services/core/java/com/android/server/BatteryService.java 电量百分百亮绿灯,其余充电电量均为红灯: publ ...

  2. 【FPGA笔记系列13】呼吸灯电路设计

    功能模块设计 常规的 LED 灯只有亮(高电平) 及暗(低电平) 两种状态. 如果产生一个周期性的脉冲信号用于驱动 LED 灯, 则 LED 灯会出现闪烁状态. 如果脉冲信号的频率足够高(大于人眼的分 ...

  3. MT6572平台加入呼吸灯功能——控制芯片SN3112-12简介

    题外话:从Android mmi层转战驱动已达3月,作为方案公司的程序猿,对于MTK的驱动,最大的体会:填表,永无止境:不会填了,请call FAE.所以,时日匆匆,待到年华已逝,填表登峰造极之时,想 ...

  4. MT6572平台加入呼吸灯功能——编写linux驱动

    上一篇介绍了本实验所使用的主要IC及其通信方式,这里开始记录正式的开发过程.所选用的平台为MTK的MT6572,做过MTK智能平台研发的亲们都知道,MTK将自己的东西都添加在自加的包mediatek下 ...

  5. android呼吸灯动画,Android高德地图自定义定位蓝点实现呼吸灯功能

    还是先上个图吧: cluster.gif 说下实现的原理,首先这个定位小蓝点是由两张图片组成的,最底层的一张白色圆形图片以及上一层的蓝色圆形图片,只要不停的对蓝色图片进行透明度动画操作就可以实现这个效 ...

  6. 灵动微电子MM32L0130系列MCU具有出色的低功耗表现

    灵动微低功耗MM32L0130系列MCU产品搭载ArmCortex-M0+处理器,集成段码LCD驱动,功耗可低至100nA,适用于多种低功耗应用场景. 低功耗MM32L0130系列MCU产品出色的低功 ...

  7. C语言开定时器做呼吸灯程序,[求助]呼吸灯的编程思路(C语言)

    /*************************************************************** * 程序说明:使用P3.2和P3.4来控制P0端口的LED灯,达到手动 ...

  8. C语言开定时器做呼吸灯程序,简单的基于51单片机定时器上呼吸灯程序

    #include #define ufloat unsigned float #define uchar  unsigned char #define uint   unsigned int ucha ...

  9. 单片机实现LED呼吸灯功能

    ** 程序名: 两键控制亮度 编写人: 编写时间: 2017年12月15日 硬件支持: STC12C2052 内部RC或外部12MHZ晶振 接口说明: 8个LED彩灯接P1口,按键接P3.7和P3.3 ...

最新文章

  1. ner pytorch project code
  2. PHP的学习--解析URL
  3. .NET 中创建支持集合初始化器的类型
  4. 微服务和Java EE
  5. oracle 11g数据库数据操作(亲测)
  6. jQuery实现一个图片左右滚动
  7. python的调试器_玩转Python调试器
  8. Yii2的urlManager URL美化
  9. iOS 网络编程(二)
  10. CCF201909-2 小明种苹果(续)(100分)【序列处理】
  11. 一文读懂C++程序的结构、执行与编译
  12. linux scp 遇到空格
  13. 分子动力学模拟算法框架
  14. C# 串口编程,扫码枪使用
  15. grafana与阿里云日志中心结合制作图表
  16. linux iio子系统
  17. RHCE(三、四)NTP时间服务器、SSH远程加密登录
  18. [xctf] 江苏工匠杯easyphp
  19. 【NIO】解读 java.nio.channels.Channel
  20. 数据流处理之乒乓操作

热门文章

  1. 四足机器人(从PCB到3D打印)
  2. 计算机网络连接黄感叹号,电脑连接路由器网络连接显示黄色感叹号的解决办法...
  3. python 实现简单画板_Python图像处理之简单画板实现方法
  4. html鼠标各种坐标,HTML坐标系与鼠标事件坐标
  5. 基于反步法backstepping的自适应控制简介
  6. 中国历代大大小小的皇帝(2)
  7. VSCode_VS2019体验背景靓图
  8. 计算机图片颜色是红色怎么办,电脑变色是怎么回事?(有图片)
  9. 我的世界服务器ess配置文件,《我的世界》ess指令大全及用法详解
  10. 安科瑞智慧消防在城市综合体中的应用