我们通常会在各类器件上看到形形色色的指示灯,它们都分别代表着不尽相同各项功能的运行情况。而由灯发出的指示光要比其他方法传递信息更直接更明显,也更加的经济。而现在呼吸灯这项技术已经应用于各个方面,甚至包括智能机的应用,而其比较多样的呼吸方法在传递相关信息上也是方便至极,那么今天我们就来看看呼吸灯的控制问题。
灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。
应用
广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
电子爱好者可通过简单的电路来实现呼吸灯的效果。
为何很多手机都取消了呼吸灯
回答之前,小编想先纠正一个问题,并不是智能机都取消了呼吸灯,很多设备还是具备这一功能的,只不过能够将这一功能发挥到极致的手机,确实是少之又少。安卓设备其实多数都是有LED灯的,不过原生安卓系统本身没有提供一个可以统一控制的通知中心,而是要每个应用自己决定显示通知的方式,这方式包括声音、震动、LED 灯及其颜色,再加上不同手机的灯或多或少都有些不同,这样就造成了有的应用不支持LED灯有的应用却错误地触发了LED灯。
久而久之,在我的日常使用中,LED灯通常会给人一种十分不可靠的感觉,实际表现在我们该点亮屏幕的时候还是会点亮屏幕,不该点亮屏幕的时候,看到LED灯错误的亮起,也要去点亮屏幕去处理,就这样,一个听起来很好的功能反倒变得有些鸡肋甚至是惹人讨厌。到了安卓4.4以后,感觉系统在LED灯控制方面更为混乱,一些常驻通知栏的图标甚至也会触发LED灯,导致用户体验极差。
而有些如CM一类的第三方ROM会提供系统级的分应用LED灯设置,不过在实际使用中的表现也不够完美。所以虽然LED呼吸灯本来是一个很好的设计,但是安卓系统却没有做好,于是有些厂商索性就取消了LED灯,或者取消了LED灯的呼吸功能。
另外,可能有些人会问,为何苹果手机也没有呼吸灯,这又是个老生常谈的问题了,苹果不具备的东西很多,很多时候我们都不知道为什么,不采用呼吸灯,可能是因为技术,也可能是因为专利,苹果同安卓不同,其并非开源系统,很多时候,苹果都会来规范用户的使用习惯,不设置呼吸灯,或许只是因为苹果觉得用户不需要它吧。至于这位网友在问题中提到的触控反馈,这个其实不需要小编多说了,貌似目前大部分手机都有触控反馈吧,只需要在设置中调出来就好。
呼吸灯的作用
呼吸灯是一个提气的设计,它让手机不再是一块只会亮屏的板砖。因为不是所有的消息通知都需要处理,也不是所有的消息通知都会马上处理。对于手机来讲,亮屏铃声震动属于强通知,这包括一些软件提供的来电闪光功能,呼吸灯则属于弱通知,不是所有人都会定期去查看手机的,多数情况下在办公室我们都只是把手机放在桌上,偶尔去下洗手间也不会带着,这中间如果有消息,我们回来瞟一眼就知道了,呼吸灯作为弱通知的作用,提醒的意义大于通知。
先说呼吸灯,这个本质上是LED的亮度控制。
一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。
再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个LED用同一个信号控制,当然,亮度也是同步变化的。如果要复杂,那就出30个信号分别控制30个LED串30个电阻,具体看你的追求的效果吧。
呼吸灯的程序,如果有硬件的PWM模块,是很简单的,按一定的规律让PWM的输出变化就可以。
像这样输出10%亮度,持续200ms,输出20%亮度,持续200ms,输出30%亮度,持续200ms。
如果没有硬件PWM模块,可以用软件来模拟,比如,输出10%亮度,持续200ms这两件事合在一起作,变成输出高电平10us,输出低电平90us,循环2000次。
两种方法:
方法1:1000个左右的灯,需要10根地址线选通,51的IO管脚应该是没有问题。剩下的就是要用大量的译码器,把二进制信息转换为管脚信息。
估计你仅仅是控制亮和灭,如果是这样选通也就可以进行明暗的控制,否则输出的信息也要加进去,就是说需要加驱动电路。
方法2:用移位电路,比如HC595,在51中地址做为串行信号发出,转换为对应的地址线,然后在连接译码器,这样,51的管脚比较节省,但,编程的难度稍大。
那么上述就是呼吸灯相关控制的方法和技巧,我们讲,呼吸灯控制在硬件圈是一个很普通的项目,而所采用的单片机控制也是硬件里最基础的,相信很多人在研习过后都能够掌握,而即便不必要掌握这个情况,熟悉相关的原理情况也可以让其在遇见故障的时候能够迅速找到方法来排除,那么今天呼吸灯控制的问题就给大家介绍到这里。
土巴兔在线免费为大家提供“各家装修报价、1-4家本地装修公司、3套装修设计方案”,还有装修避坑攻略!点击此链接:【https://www.to8to.com/yezhu/zxbj-cszy.php?to8to_from=seo_zhidao_m_jiare&wb】,就能免费领取哦~
单片机式的呼吸灯控制方法
一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个LED用同一个信号控制,当然,亮度也是同步变化的。如果要复杂,那就出30个信号分别控制30个LED串30个电阻,具体看你的追求...
基于AVR 单片机设计一款 LED 呼吸灯
首先,确保材料准备充足,包括:AVR单片机,如ATmega328PLED灯电阻式柔性薄膜压力传感器用于显示压力值的LCD显示屏电阻、电容等电子元件开发板或面包板等搭建工具接着,进行硬件连接,如:连接单片机与其他元件,确保系统稳定运行将LED灯与单片机引脚连接,实现呼吸灯效果压力传感器连接至模拟输入引脚,以测量和控...
51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯?
ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的 MOV P0,#02H;()只有第二个灯亮 ACALL DELAY MOV P0,#04H;()只有第三个灯亮 ACALL DELAY MOV P0,#08H;()只有第四个灯亮 ACALL DELAY MOV P0,#10H;()只有第五个灯亮 ACALL DELAY MOV P0,#20H;()只有第六个灯亮 A...
求单片机大神帮忙设计一个电路,51单片机制作led呼吸灯的
演示定时器1的快速PWM输出@利用快速PWM输出控制LED的亮度变化,达到呼吸灯的效果*\/ include<iom8a.h>#include"port_set.h"#include"delay.h"\/***@函数功能:定时器1初始化@说明:定时器初始化为快速PWM,TOP为8位(0x00FF)时钟输入为系统时钟匹配时OC1A输出0,在TOP时输出1OC1B为普通端口输入捕捉触...
51单片机两个定时器中断写了个呼吸灯程序,怎么调试出来是小灯闪烁程序...
程序太乱,只用一个定时器就可以 如定时100us 中断一次 20次是2 ms 即周期是2 ms 中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0 主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了 如延时200ms改变一次b...
利用单片机外接的三个按键分别模拟开关,调亮,调暗输入,控制2个发光...
可以实现 这个有个高大上的名字:呼吸灯 可以自动慢慢亮然后慢慢灭,也可以增加按键控制亮灭的程度 原理是用PWM实现不同电压的输出来实现灯的变亮和变暗,下面是网上截的图,比较容易理解,具体程序的话,就自己动手吧
用stm8单片机实现呼吸灯
占空比=0 和占空比=100,是一个高电平一个低电平,当然能实现LED的亮灭了,占空比从0-100可以发现LED的亮度是从0到100%亮度变化的。仔细理解下PWM占空比的概念。
单片机制作呼吸灯的C语言程序怎样编写
include<reg51.h> sbit LED0=P0^0;sbit wei=P1^1;sbit duan=P1^0;sbit lcden=P1^7;sbit dianzhen=P1^3;sbit leden=P1^2;void Delay(unsigned int t);void main (void){ unsigned int CYCLE=600,PWM_LOW=0;\/\/定义周期并赋值 lcden=0;P0=0x00;dianzhen=0;P0=0xff;wei=0;duan=0;...
求一个89c52单片机的呼吸灯程序 要边呼吸边移动的 就是相当于呼吸灯流水...
delay(10); \/\/ 这里的延时 根据灯的情况自己调整 } } } \/\/ 主程序开始 void main(){ unsigned char ledn;while(1){ for(ledn=0;ledn<8;ledn++){ off_on(ledn);on_off(ledn);} } } 这个程序我简单测试了一下,效果还好,不知道这个效果是不是您想要的?说明一下啊,我这...
求一个stc15w202s单片机的呼吸灯程序 要边呼吸边移动(波浪状), 就是...
pwm要挺高频率才行,不然会闪,试过3灯的rgb,原理上差不多,但是直接程序死循环都难受,不是很流畅,你也可以参考一下。。。include "reg52.h"include "intrins.h"sbit r=P1^0;sbit g=P1^1;sbit b=P1^2;void Delay200ms();void play(char rz1,char gz1,char bz1,int t);void Delay...