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

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

各色のLEDに係るファイルは次のディレクトリに配置されているようである。

  • 緑:/sys/class/leds/led0/
  • 橙:/sys/class/leds/led1/
図1.各色のLEDの明滅を司るファイルのあるディレクトリ

triggerファイルにはLEDを点滅させる切っ掛けが記されている。ブラケットに包まれた単語が切っ掛けとなるイベントで、デフォルトでは緑のLEDがmmc0、オレンジのLEDはinputが選択されていた。

$ cat /sys/class/leds/led0/trigger
none (snip) default-on input 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

このファイルに対してトリガー名をリダイレクトすることで選択内容を変更することができる。

# echo none >/sys/class/leds/led0/trigger

mmc0はSDカードにアクセスがあった時に点滅するということである。inputの詳細は探し当てられなかったけれども、何しろinputであるからなんらかの入力であろうと思う。heartbeatやtimerを選択すると規則的な明滅となる。じいっと眺めているとまばゆさで目が潰れてしまう。

図2. heartbeatを選択したときのLED明滅のようす

点滅の制御はbrightnessでおこなう。0から255までの値を取り0で消灯、1~255で点灯する。

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

採用した値の大小で輝度が変えられるように見えるけれどもハードウェアがサポートしていないらしく明るさは一通りである。なおbrightnessの数値を0に変更するとtriggerは勝手にnoneへ変更されていた。

一秒おきに緑の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

コメントする

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