esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?

引言

呼吸灯最早是由苹果公司发明并应用于笔记本睡眠提示上,一经展出,立刻吸引众多科技厂商争相效仿。将其广泛用于各种电子产品中,尤其是智能手机。于是研究了一下,一起来DIY一个变色RGB呼吸灯吧。呼吸灯其实是在芯片控制下,由暗渐亮,然后再由亮渐暗,模仿人呼吸方式的LED灯。

实现效果如下:变色呼吸灯https://www.zhihu.com/video/1079077606984507392

关键词:RGB变色,对数调光,呼吸灯什么是呼吸灯?

呼吸灯是指灯在微控器控制之下完成由暗到亮的逐渐变化,再由亮到暗的逐渐变化,亮暗的节奏感觉像是人在呼吸。

2. 呼吸灯实现原理

对成人而言,平均每分钟呼吸16~18次; 对儿童而言,平均每分钟呼吸20次。由此可得,每次呼吸用时约3秒。吸气过程1.5s, 呼气过程1.5s。

吸气:指数曲线上升,该过程需要1.5s

呼气:指数曲线下降,该过程需要1.5s

所以要实现呼吸灯分为两个过程:亮度由暗到亮(模拟吸气过程,该过程需要1.5s )

由亮到暗(模拟呼气过程,该过程需要1.5s)

所以用微控器做呼吸灯是利用频率来控制呼吸灯的呼吸时间,用占空比来控制灯的亮度。也就是采用PWM的方式,在固定的频率下,采用占空比的方式来实现LED亮度的变化。占空比为0,LED灯不亮,占空比为100%,则LED灯最亮。所以将占空比从0到100%,再从100%到0不断变化,就可以实现LED灯实现特效呼吸。但是有一个问题,如果PWM按线性变化在低占空比时,LED的亮度变化非常快,可以说肉眼能非常容易分辨的亮度变化区域在占空比5%~30%之间就完成了,也就是如果PWM是线性增加,亮度一开始是急剧变化,到最后变化就不明显了,这样造成显示效果非常不好。所以采用对数调光,使得LED的亮度变化效果“在视觉上是线性的”。让人眼能够感受到灯由暗到亮的调光过程。

假设设计中分成10级亮度。PWM有255级: 10=x*lg255 计算得x=4.16,然后9,8,7.....2,1反过来应用公式算出对应的PWM值,每一级对应一个相应的PWM值,按照这个PWM值变出来的LED亮度才是平顺变化的。

1.5s变化10级,则每级变化的时间间隔为0.15s也就是150ms。

理解了上述原理,在实际编程时亮度级数为80级,变化间隔20ms,也就是视频中的效果。

3. 趣味小知识

1. 【人眼视觉特性】人眼对亮度的响应具有对数非线性性质,以达到其亮度的动态范围。由于人眼对亮度响应的这种非线性,在平均亮度大的区域,人眼对灰度误差不敏感。

2. 不仅是视觉,包括人耳朵对声音也是非线性的,所以调节音量的电位器也是对数的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值