Biu~笔记:高通蓝牙ADK(16)--呼吸灯初体验

       Bui~ Bui~ Bui~~ 巴啦啦能量,小魔仙,全身变,变出好看的灯光(咒语:巴啦啦能量,沙胡胡,魔仙极光)

       想必大家都有想过要那种好看又不实用,装13还很炫酷的发光二极管灯效吧!哼,幼稚(﹁"﹁),耳机上面做灯效,是给自己看的吗,自己能看吗,还不是给别人看的,别人看了也只会说一句,“真好看(*^▽^*)”

       本篇就带大家实现那些还算可以的呼吸灯灯效。我们知道在默认代码中是没有呼吸灯的应用的,但是硬件的几个LED口是支持PWM,有PWM就能做出呼吸灯效果啦。那要怎么实现呢,小编就带大家简单了解实现呼吸灯的方法,如想更简易的在实际运行中使用呼吸灯的,请查看下一篇博文,但是这篇是讲怎么做效果,下篇是讲怎么把效果使用起来,不一样的哈。

       首先,看过这部分代码的童鞋应该知道,在默认代码中,LED的使用是用PIO拉高拉低来控制LED。(PWM不也是周期拉高拉低IO吗?),是的PWM也是拉高拉低,但在ADK中不同的是,有些IO有默认功能,就像trb口那样。而LED口他是有PWM功能的,这个PWM不是应用层去拉高拉低,而是在固件中就实现了PWM功能,应用层只需要配置即可。但如果应用层把这个IO声明为应用层控制,就不能再使用他的PWM了。所以,我们要在默认代码中把这个LED的IO还原成默认功能。这里只需要改earbud_led.c的一个参数就好了

接下来就是怎么配置PWM,其实很多固件的API都很少,但可配置的东西很多。配置PWM的函数就只有一个,就是LedConfigure。LedConfigure中第一个参数是LED的ID,你也可以认为IO LED0对应ID LED_0;IO LED1对应ID LED_1,以此类推很简单,ID都可以在led_id这个枚举列表里面查到。第二个参数就是配置参数类型,这个配置参数都可以在led_config_key 这个枚举列表里面查到,里面还有很详细的说明,第三个参数就是具体数据了。

       了解以上就可以开始配置了,这里举一个小例子来说明。

  1. 我们需要把这个LED口使能,第三个参数1为使能,0为关闭

LedConfigure(LED_0, LED_ENABLE, 1);

  1. 设置亮起来的最大亮度,第三个参数0为最暗,0xfff为最亮

LedConfigure(LED_0, LED_DUTY_CYCLE, 0xfff);

  1. 设置灭下去的最小亮度,第三个参数0为最暗,0xfff为最亮

LedConfigure(LED_0, LED_FLASH_LOW_DUTY_CYCLE, 0x10);

  1. 设置最大亮度时的持续时间,单位16us

LedConfigure(LED_0, LED_FLASH_MAX_HOLD, 0x4a12);

  1. 设置最小亮度时的持续时间,单位16us

LedConfigure(LED_0, LED_FLASH_MIN_HOLD, 0x4a12);

  1. 设置闪烁(渐变)速度,0为闪烁,1~0xf为渐变,数字越少速度越快

LedConfigure(LED_0, LED_FLASH_RATE, 0x8);

  1. 开始闪烁,1为开始,0为停止

LedConfigure(LED_0, LED_FLASH_ENABLE, 0x1); 

完成以上操作就能在板子上看到灯在缓慢的呼吸了。这只是常规操作,当使用多个灯的时候,还可以设置同步开始,或是先后顺序亮起,或是设置不同的初始化状态,更多好玩的功能,等着大家去探索。

 

        以上是本期博文的全部内容,如有疑问请在博文下方评论留言,或者有什么想了解的都可以留言,我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

 

 

多看文档,多上官网

多看文档,多上官网

多看文档,多上官网

 

参考文档:80-CF927-1_AB_LED Controller Application Note

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

我很菜

我很菜

2021年8月3日
大佬,秀啊
realhjt

realhjt

2021年4月26日
请问在qcc3040平台,没有RTC的情况下;双耳同步呼吸灯颜色、亮度、频率有啥好办法嘛,因为实际测试主从耳存在延时效果不佳?