這裡介紹如何撰寫程式控制樹莓派(Raspberry Pi)板子上內建的 ACT LED 指示燈。
樹莓派 Raspberry Pi B+ 上面有一個綠色的 ACT LED 指示燈,在預設的狀況下只要系統有存取 MicroSD 卡時,這個指示燈就會發亮,而這個指示燈也可以讓使用者透過程式來控制,依照使用的需求來動作。
首先進入
code
目錄中:
cd /sys/class/leds/ACT
這個目錄中包含了所有控制 ACT LED 指示燈會用到的系統檔案。
trigger
trigger
是用來設定指示燈觸發條件的檔案,預設的 trigger
設定會是 mmc0
(MultiMediaCard),代表存取 MicroSD 卡時觸發 LED 指示燈,如果您將 trigger
這個檔案直接用 cat
輸出,其內容會像這樣:
none [mmc0] timer oneshot heartbeat backlight gpio cpu0 default-on
中括號代表目前所選擇的觸發條件,而其餘的都是使用者可以選擇的選項,以下介紹各種選項的使用方式。
手動控制指示燈
如果要完全使用手動控制指示燈,可以將觸發條件設定為 none
:
sudo sh -c 'echo none > trigger'
或是直接切換成 root
再執行也可以:
sudo su echo none > trigger
然後再更改 brightness
的內容來控制燈號,設為大於 0
的值會讓指示燈開啟:
sudo sh -c 'echo 1 > brightness'
設定為 0
則會讓指示燈關閉:
sudo sh -c 'echo 0 > brightness'
brightness
的值可以設定的範圍是從 0
到 max_brightness
的值(也就是 255
)之間,在一般的 Linux 下使用者可以透過 brightness
調整 LED 的亮度,不過由於 Raspberry Pi 的硬體不支援亮度的調整,只能開啟或是關閉,所以在 Raspberry Pi 上面,只要將 brightness
設定為大於 0
的值,不管其值為何,效果都是一樣的(都是開啟 LED 指示燈)。One-shot LED Trigger
這種觸發條件適合用於一些沒有明確開啟與關閉的事件,使用這種觸發條件時,使用者只需要在事件發生時送出訊號,而指示燈在收到觸發訊號時會開啟,經過一小段時間後自動關閉。
這種觸發條件可以同時適用於較稀疏或是較密集的觸發事件,如果觸發事件很稀疏,那麼每一個事件觸發時指示燈就會閃一下,而如果觸發事件非常密集而且連續不斷,那麼指示燈就會以固定的頻率持續閃爍,表示持續有事件被接收到。
在使用這種觸發事件時,首先將 trigger
設定為 oneshot
:
sudo sh -c 'echo oneshot > trigger'
然後將 shot
設定為 1
來觸發事件:
sudo sh -c 'echo 1 > shot'
如果要更改持續事件的閃爍頻率,可以修改 delay_on
與 delay_off
兩個檔案內容:
sudo sh -c 'echo 33 > delay_on' sudo sh -c 'echo 33 > delay_off'
這樣持續觸發事件閃爍的頻率就是 1 / (33 + 33) Hz。
一般來說觸發事件時,指示燈會開啟,平常如果沒有事件的時候,指示燈是熄滅的。而這個邏輯規則可以靠 invert
來調整,如果 invert
設定為 0
(這是預設的狀況):
sudo sh -c 'echo 0 > invert'
指示燈在觸發時會開啟 delay_on
ms,然後關閉 delay_off
ms,如果設定為 1
:
sudo sh -c 'echo 1 > invert'
則會相反,在事件觸發時指示燈會關閉 delay_off
ms,然後開啟 delay_on
ms,平常沒有事件時,指示燈則是保持開啟的狀態。
以 CPU 狀態觸發
依照 CPU 的狀態觸發指示燈:
sudo sh -c 'echo cpu0 > trigger'
當 CPU 忙碌時指示燈就會開啟,當 CPU 進入 idle 狀態時則熄滅。
定時閃爍
不需任何觸發事件,讓指示燈依照固定的頻率持續閃爍:
sudo sh -c 'echo timer > trigger'
閃爍的頻率同樣可以透過 delay_on
與 delay_off
兩個檔案來指定:
sudo sh -c 'echo 50 > delay_on' sudo sh -c 'echo 50 > delay_off'
模仿心跳閃爍
類似 timer
,不過模仿心跳的方式閃爍:
sudo sh -c 'echo heartbeat > trigger'
持續開啟指示燈
將 trigger
設定為 default-on
會讓指示燈持續開啟:
sudo sh -c 'echo default-on > trigger'
如果您對於樹莓派的應用有興趣,建議您可以繼續閱讀物聯網的相關文章。
參考資料:Raspberry Pi、GitHub、GitHub
1 則自動引用通知