Linux 下的多色 LED 处理¶
描述¶
多色类将单色 LED 分组,并允许控制最终组合颜色的两个方面:色调和亮度。前者通过 multi_intensity 数组文件控制,后者通过 brightness 文件控制。
多色类控制¶
多色类呈现的文件将颜色分组为数组中的索引。这些文件是 led_class 框架创建的 LED 父节点下的子节点。led_class 框架的文档位于此文档目录中的 led-class.rst 中。
每个彩色 LED 将在 multi_* 文件下进行索引。颜色的顺序是任意的。可以读取 multi_index 文件来确定颜色名称到索引值的映射关系。
multi_index 文件是一个数组,其中包含在每个 multi_* 数组文件中定义的颜色字符串列表。
multi_intensity 是一个数组,可以读取或写入以获取各个颜色的强度。必须按顺序写入此数组中的所有元素才能更新彩色 LED 的强度。
目录布局示例¶
root:/sys/class/leds/multicolor:status# ls -lR -rw-r--r-- 1 root root 4096 Oct 19 16:16 brightness -r--r--r-- 1 root root 4096 Oct 19 16:16 max_brightness -r--r--r-- 1 root root 4096 Oct 19 16:16 multi_index -rw-r--r-- 1 root root 4096 Oct 19 16:16 multi_intensity
多色类亮度控制¶
每个 LED 的亮度级别是根据颜色 LED 强度设置除以全局 max_brightness 设置乘以请求的亮度计算得出的。
led_brightness = brightness * multi_intensity/max_brightness
示例:用户首先写入 multi_intensity 文件,其中包含实现多色 LED 组特定颜色输出所需的每个 LED 的亮度级别。
cat /sys/class/leds/multicolor:status/multi_index green blue red
echo 43 226 138 > /sys/class/leds/multicolor:status/multi_intensity
- 红色 -
强度 = 138 最大亮度 = 255
- 绿色 -
强度 = 43 最大亮度 = 255
- 蓝色 -
强度 = 226 最大亮度 = 255
用户可以通过写入全局 “亮度” 控制来控制多色 LED 组的亮度。假设最大亮度为 255,用户可能希望将 LED 颜色组调暗一半。用户会将值 128 写入全局亮度文件,然后会根据此值调整写入每个 LED 的值。
cat /sys/class/leds/multicolor:status/max_brightness 255 echo 128 > /sys/class/leds/multicolor:status/brightness
调整后的红色值 = 128 * 138/255 = 69 调整后的绿色值 = 128 * 43/255 = 21 调整后的蓝色值 = 128 * 226/255 = 113
读取全局亮度文件将返回颜色 LED 组的当前亮度值。
cat /sys/class/leds/multicolor:status/brightness 128