Raspberry Pi 3 Model Bの本体に付いているLEDの点滅を自在に操作する

Raspberry Pi 3 Model B
OS: Raspbian Stretch lite March 2018

緑のLEDを司るファイルは /sys/class/leds/led0/、オレンジのLEDを司るファイルは /sys/class/leds/led1/ 以下に配置されているようである。何をきっかけにLEDを点滅させるかはtriggerファイルの内容を確認すればよろしい。デフォルトでは緑のLEDがmmc0、オレンジのLEDがinputである。

$ cat /sys/class/leds/led0/trigger
none (snip) panic mmc1 [mmc0] rfkill-any rfkill0 rfkill1

$ cat /sys/class/leds/led1/trigger
none (snip) default-on [input] panic mmc1 mmc0 rfkill-any rfkill0 rfkill1

mmc0はSDカードにアクセスがあった時に点滅する。inputはなんだかよくわからないが何しろinputであるからなんらかの入力であろうと思う。heartbeatやtimerを選択すると規則的に点滅させることができる。じっと眺めているとまばゆさで目が潰れてしまう。

heartbeatを選択したときのLEDのようす

点滅の制御はbrightnessでおこなう。0から255までの値を取り0で消灯、1~255で点灯する。数値の大小で輝度が変えられるように見えるけれどもどうやら一様な明るさである。なおbrightnessの数値を0に変更するとtriggerは勝手にnoneへ変更された。

$ sudo su -c "echo 0 > /sys/class/leds/led0/brightness"
$ sudo su -c "echo 1 > /sys/class/leds/led0/brightness"

一秒ごとに緑のLEDを明滅させる拙いシェルスクリプトled.shは概ねこんな具合である。あとはsudo bash led.shとすれば緑LEDが毎秒明滅するようになった。

#!/bin/bash

if [ $(id -u) != '0' ]; then
  echo 'Run as root.'
  exit 1
fi

GREEN='/sys/class/leds/led0'
trap 'echo mmc0 > ${GREEN}/trigger; exit 1' 1 2 9 15
echo none > ${GREEN}/trigger

while true
do
  echo 0 > ${GREEN}/brightness
  sleep 1
  echo 1 > ${GREEN}/brightness
  sleep 1
done

参考:
Can we control the on-board leds
How do I control the system LEDs using my software?
Are there other act_led_trigger options besides “mmc” and “heartbeat”?

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください