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
示例:使用者首先將每個 LED 的亮度級別寫入 multi_intensity 檔案,這些級別是多色 LED 組產生特定顏色輸出所必需的。
# cat /sys/class/leds/multicolor:status/multi_index
green blue red
# echo 43 226 138 > /sys/class/leds/multicolor:status/multi_intensity
red -
intensity = 138
max_brightness = 255
green -
intensity = 43
max_brightness = 255
blue -
intensity = 226
max_brightness = 255
使用者可以透過寫入全域性 'brightness' 控制來控制該多色 LED 組的亮度。假設 max_brightness 為 255,使用者可能希望將 LED 顏色組調暗一半。使用者會將值 128 寫入全域性 brightness 檔案,然後寫入每個 LED 的值將根據此值進行調整。
# cat /sys/class/leds/multicolor:status/max_brightness
255
# echo 128 > /sys/class/leds/multicolor:status/brightness
adjusted_red_value = 128 * 138/255 = 69
adjusted_green_value = 128 * 43/255 = 21
adjusted_blue_value = 128 * 226/255 = 113
讀取全域性 brightness 檔案將返回彩色 LED 組的當前亮度值。
# cat /sys/class/leds/multicolor:status/brightness
128