今早有点空,我就测试了一下蓝牙音箱的例程~看看AIR820的蓝牙功能及模拟语音输出~
短短嘘嘘的弄LUAT也快2周了,感觉自己还是稀里糊涂的,面前能用,但是不知其根本~
我们先看下音频输出的原理图(仅看看,我感觉合宙完全模块化了,搞硬件我都不要动脑筋了……^~^):
蓝牙的配置直接参考DEMO里面的例子:
我们使用的例程为demo下的bt_learn例子,进行学习。
初始化流程,直接COPY:
- local function init()
- log.info("bt", "init")
- rtos.on(rtos.MSG_BLUETOOTH, function(msg)
- if msg.event == btcore.MSG_OPEN_CNF then
- sys.publish("BT_OPEN", msg.result) --蓝牙打开成功
- elseif msg.event == btcore.MSG_BT_HFP_CONNECT_IND then
- sys.publish("BT_HFP_CONNECT_IND", msg.result) --hfp连接成功
- elseif msg.event == btcore.MSG_BT_HFP_DISCONNECT_IND then
- log.info("bt", "bt hfp disconnect") --hfp断开连接
- elseif msg.event == btcore.MSG_BT_HFP_CALLSETUP_OUTGOING then
- log.info("bt", "bt call outgoing") --建立呼出电话
- elseif msg.event == btcore.MSG_BT_HFP_CALLSETUP_INCOMING then
- log.info("bt", "bt call incoming") --呼叫传入
- sys.publish("BT_CALLSETUP_INCOMING", msg.result)
- elseif msg.event == btcore.MSG_BT_HFP_RING_INDICATION then
- log.info("bt", "bt ring indication") --呼叫传入铃声
- elseif msg.event == btcore.MSG_BT_AVRCP_CONNECT_IND then
- sys.publish("BT_AVRCP_CONNECT_IND", msg.result) --avrcp连接成功
- elseif msg.event == btcore.MSG_BT_AVRCP_DISCONNECT_IND then
- log.info("bt", "bt avrcp disconnect") --avrcp断开连接
- end
- end)
- end
复制代码
然后打开蓝牙:
btcore.open(2) --打开经典蓝牙
这个函数里面传参的含义:
就用经典的,好弄。至于MASTER模式,我都不知道怎么弄~先不管了~
然后查询蓝牙消息:
直到链接成功,然后下面我们就可以收发数据了。
蓝牙其他函数,在该链接,讲的很清晰:
https://doc.openluat.com/article/3495
我们定义KEYPAD来操作蓝牙控制播放的操作:
- require "audio"
- local vol = 50
- local musicstatus = 1
- local keyMap = {{},{},{},{},{},{},{},{},{},{}}
- keyMap[0] = {}
- keyMap[255] = {}
- keyMap[2][0] = "ENTER"
- keyMap[2][1] = "DOWN"
- keyMap[1][0] = "UP"
- keyMap[1][1] = "ESC"
- keyMap[255][255] = "PWK"
- local function keyMsg(msg)
- if keyMap[msg.key_matrix_row][msg.key_matrix_col] == "PWK" and msg.pressed then
- btcore.setavrcpsongs(musicstatus)
- if musicstatus == 0 then
- musicstatus = 1
- elseif musicstatus == 1 then
- musicstatus = 0
- end
- log.info("bt", "musicstatus",musicstatus)
- end
- if msg.pressed then
- if keyMap[msg.key_matrix_row][msg.key_matrix_col] == "ENTER" then
- btcore.setavrcpsongs(3)
- log.info("bt","下一曲")
- elseif keyMap[msg.key_matrix_row][msg.key_matrix_col] == "ESC" then
- btcore.setavrcpsongs(2)
- log.info("bt","上一曲")
- elseif keyMap[msg.key_matrix_row][msg.key_matrix_col] == "UP" then
- vol = vol + 10
- if vol > 127 then
- vol = 127
- end
- btcore.setavrcpvol(vol)
- log.info("bt","加音量", vol)
- elseif keyMap[msg.key_matrix_row][msg.key_matrix_col] == "DOWN" then
- vol = vol - 10
- if vol < 0 then
- vol = 0
- end
- btcore.setavrcpvol(vol)
- log.info("bt","减音量", vol)
- end
- end
- end
- rtos.on(rtos.MSG_KEYPAD,keyMsg)
- rtos.init_module(rtos.MOD_KEYPAD,0,0x7F,0x7F)
复制代码
- 按POWER键控制音乐播放与暂停
- 按DOWN键减小音量,单位为10
- 按UPWARD键增大音量,单位为10
- 按ENTER键切换下一首音乐
- 按ESC键切换上一首音乐
遗憾的是我的 手机音量调节不支持,其他正常~
我们开启AUDIO的输出通道:
默认用喇叭输出,但板子是仅预留了接口,没有喇叭,但是有耳机的 威廉希尔官方网站
。
我们来切换输出的通道:
- log.info("bt", "连接成功")
- -- 设置为听筒输出、主mic输入:
- --audio.setChannel(0)
- -- 设置为耳机输出、主mic输入:
- audio.setChannel(1)
- -- 设置为喇叭输出、主mic输入:
- --audio.setChannel(2)
- -- 设置为喇叭输出、耳机mic输入:
- --audio.setChannel(2,3)
复制代码
AUDIO其他函数: https://doc.openluat.com/wiki/21?wiki_page_id=2266
添加到蓝牙连接好之后的初始化代码列,下载程序并运行,我们把耳机接到板上,打开手机蓝牙连上板子~
我们按按键可以控制暂停播放机上下首~
正常,音质还不错~好评~
好了,蓝牙音箱的测评就到这了~~
|