昨天把玩了 Raspberry Pi 的 Status LED,今天換張板子,來玩玩 Cubieboard 的 Status LEDs。
依 RAM 的大小,Cubieboard 分成 512MB 與 1GB 兩種版本,除此以外,還沒聽說硬體有其它版本,所以 Cubieboard 的狀態指示燈目前應該只有一個版本。如下圖,以我所知,Cubieboard 板子上有三顆狀態指示燈:
這三顆指示燈的意義為:
- PWR (紅燈) – 3.3V 電源指示燈
- LED1 (藍燈) - 好像沒特定用途
- LED2 (綠燈) - 好像沒特定用途
PWR 燈不能拿來玩,所以 LED1 (藍燈) 和 LED2 (綠燈) 就是這次要被玩的對象啦。學習撰寫程式通常都是從 Hello World Program 開始,而學習一塊電子的板子則通常從控制 LED 明滅作為起點。咱們就以底下的 blink.sh 來控制 LED 的明滅:
blink.sh
以 sudo ./blink.sh 執行後,藍燈就會亮一秒,滅一秒,不斷地循環。
/sys/class/leds/blue:ph21:led2 這個節點代表的就是藍燈這個設備,寫入 0 到節點底下的 brightness 會讓 LED 熄滅,寫入 1 就會打開 LED。
同樣是控制 LED 的明滅,我們也可以這樣做:
把上列程式存成 trigger.sh 後,以 sudo ./trigger.sh 執行,會得到一樣的效果,藍燈會亮一秒,滅一秒,不斷地循環。
這次不同的地方,是以 echo timer > /sys/class/leds/blue:ph21:led2/trigger 設定藍燈使用 timer 控制,至於明滅的時間,則分別把數值寫到 delay_on 與 delay_off 就可以了,本例都設成 1000,代表明滅時間各是一秒鐘。
trigger 還有其它用法,比如可以用藍燈顯示 SD Card 的存取狀態:
$ echo mmc0 > /sys/class/leds/blue:ph21:led2/trigger
也可以用燈號來作 Linux 的心跳計:
$ echo heartbeat > /sys/class/leds/blue:ph21:led2/trigger
正確地說,heartbeat 其實是 CPU 的心跳計,如果 CPU 的 Loading 很高的話,它的心跳速度,也就是燈號閃爍的速度就會跟著變快。
要知道有哪些 trigger 方式,可以輸入底下這條指令:
$ cat > /sys/class/leds/blue:ph21:led2/trigger
這是在我的 Cubieboard 上看到的結果:
參考資料