蓝牙学习之亮度调节

cpp 复制代码
#define LIGHTNESS_SET		        	0x4C82
#define LIGHTNESS_LINEAR_SET		    0x5082

蓝牙设置亮度的opcode有以上两种

特性 LIGHTNESS_SET LIGHTNESS_LINEAR_SET
亮度语义 感知亮度(Perceived) 线性亮度(Physical)
符合人眼? ✅ 是(Gamma 校正) ❌ 否(物理线性)
0x8000 灯看起来是"柔和的一半亮度" 灯看起来接近"全亮的 2/3"
典型用途 用户手动调光 自动化、照度控制、多灯同步

1.先将两个蓝牙设备亮度调到最低。(一个0x0002,一个0x0004)

.. lightness_0001

<0000>16:43:14:739 [INFO]:(common)ExecCmd: e8 ff 00 00 00 00 02 00 ff ff 82 4c 01 00 00

<0001>16:43:14:771 [INFO]:(GATEWAY) gateway mesh cmd sendback src:0001 dst:ffff,opcode is 4c82: 01 00 37

<0002>16:43:15:189 [INFO]:(cmd_rsp)Status Rsp______________: 02 00 01 00 82 4e 01 00

<0003>16:43:15:252 [INFO]:(cmd_rsp)Status Rsp______________: 04 00 01 00 82 4e 01 00

<0002>举例说明:

02 00:源地址 0x0002

01 00:目标地址0x0001(gateway)

82 4e:opcode → #define LIGHTNESS_STATUS 0x4E82

01 00 :当前感知亮度 → 0x0001

2.分别使用LIGHTNESS_LINEAR_SET和LIGHTNESS_SET设置0x8000

LIGHTNESS_LINEAR_SET

<0000>16:51:04:552 [INFO]:(common)ExecCmd: e8 ff 00 00 00 00 02 00 02 00 82 50 00 80 00

<0001>16:51:04:586 [INFO]:(GATEWAY) gateway mesh cmd sendback src:0001 dst:0002,opcode is 5082: 00 80 38

<0002>16:51:04:618 [INFO]:(cmd_rsp)Status Rsp______________: 02 00 01 00 82 52 01 00 00 80 4a

<0002>举例说明:

02 00:源地址 0x0002

01 00:目标地址0x0001(gateway)

82 52:opcode → #define LIGHTNESS_LINEAR_STATUS 0x5282

01 00 :当前亮度→ 0x0001

00 80:目标亮度→ 0x8000

4a:过度时间→ 10秒

编码(Hex) 二进制 含义

0x00 00000000 无默认过渡(立即执行)

0x23 00100011 3 × 100ms = 300ms

0x45 01000101 5 × 1s = 5 秒

0x81 10000001 1 × 10s = 10 秒 (0x4A也是10秒)

0xC2 11000010 2 × 10min = 20 分钟

LIGHTNESS_SET

<0003>16:51:20:702 [INFO]:(common)ExecCmd: e8 ff 00 00 00 00 02 00 04 00 82 4c 00 80 00

<0004>16:51:20:754 [INFO]:(GATEWAY) gateway mesh cmd sendback src:0001 dst:0004,opcode is 4c82: 00 80 39

<0005>16:51:20:786 [INFO]:(cmd_rsp)Status Rsp______________: 04 00 01 00 82 4e 01 00 00 80 4a

3.获取两个设备的亮度值,肉眼看亮度是不一样的,实际获取的亮度值也是不一样的

LIGHTNESS_GET

<0006>16:52:08:497 [INFO]:(common)ExecCmd: e8 ff 00 00 00 00 02 00 ff ff 82 4b

<0007>16:52:08:538 [INFO]:(GATEWAY) gateway mesh cmd sendback src:0001 dst:ffff,opcode is 4b82NULL

<0008>16:52:08:789 [INFO]:(cmd_rsp)Status Rsp______________: 02 00 01 00 82 4e 04 b5

<0009>16:52:08:901 [INFO]:(cmd_rsp)Status Rsp______________: 04 00 01 00 82 4e 00 80

4.结论:SET 是给人看的,LINEAR 是给机器算的

0x0002:0xB504=46340,46340/65535=70% → 符合接近全亮的2/3

0x0004:0x8000=32768,32768/65535=50% → 符合一半亮度

相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码3 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习