一、概述
上一次给大家讲述了 BLE 鼠标的电池电量读取还有上报,不知道大家有没有正确地读到电量并且上报给 PC,这一次给大家讲一下 BLE 模式下怎么控制对应的 IO 控制相应的灯做出灯效,毕竟像是在蓝牙广播的时候大家都不知道它是处于一个怎么样的状态,所以使用灯效去展现状态也是比较必要的。
二、环境搭建
2.1 SDK 下载
本文基于 NXP QN9080 IC,SDK 可在NXP 官网 https://mcuxpresso.nxp.com 下载。
2.2 硬件
本文基于 QN9080 DK 板进行开发,DK 板如图 2.2 所示。
图 2.2
2.3 开发软件
SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍。
三、工程介绍
在 SDK_2.2.0_QN908XCDK\boards\qn908xcdk\wireless_examples\bluetooth\hid_device 目录下的工程是蓝牙鼠标画框的例程,如果在开发板上面运行这个例程,我们可以看到各种的灯效,下面带大家一起看看。
3.1 广播灯效实现
在运行例程时可以发现之后要一上电,白灯就会一直闪,然后一开广播,红灯就会一直闪,这个灯效具体是怎么实现的呢。其实在 QN9080 中有现成的灯效 API 可以调用,我们只需要在合适的地方调用你需要的灯效 API 就可以实现了。例如在广播的时候我们可以在广播的 Callback 里面操作,具体可参考图 3.1 -1。
图 3.1 – 1
图中的 ① 是开启广播时闪烁红灯的灯效 API,② 是刚上电还没进行广播的时候的灯效。这两个灯效都是闪烁的效果,至于闪烁的时间快慢我们可以通过修改参数进行调整,具体可以参考图 3.1 – 2。
图 3.1 – 2
图中的 100 是指 100ms,大家可以通过修改这个宏自定义闪烁的快慢。当然,如果大家的硬件有所改变,灯的 IO 口与开发板不同的话,我们就需要将 IO 口进行相对应的修改才能实现我们想要的灯效,具体修改位置可参考图 3.1 – 3。
图 3.1 – 3
将 gpio_pins.c 的 ledPins 结构体进行相对应的修改就可以了。
3.2 BLE 连接灯效
在开启广播之后,我们就可以进行连接,当设备连接上之后大家可以看到开发板的灯是红色长亮的效果,那这个效果又是在哪里进行修改的呢,大家可以参考一下图 3.2 – 1。
图 3.2 - 1
图中的 ① 表示的是目前这个 case 是连接成功的 case,② 表示的是先使用 LED_StopFlashingAllLeds 函数关闭在广播时闪烁的灯,再使用 Led1On() 将灯效改变为红色长亮的状态。当断开连接后我们可以看到灯又变成红色灯闪烁,这里是因为在断开连接之后,Mouse 又开启广播,所以红灯开始闪烁,这部分的具体代码可以参考图 3.2 – 2。
图 3.2 - 2
图中的 ① 是丢失连接的 case,图中的 ② 是重新开启广播的函数。当然如果你不需要重新开启广播或者需要做一些其他的操作,也可以在这里自行添加。通过前面的讲述,大家对于怎么去修改蓝牙各种状态的灯效是否有了一个大致的了解,后面还会有其他关于鼠标的内容,希望大家继续观看。
四、参考资料
[1] QN908x.pdf
[2] QN908x user manual.pdf
评论