LoginSignup
2
3

More than 5 years have passed since last update.

NanoPi NEOのLEDを任意の間隔で点滅させる /sys/class/leds

Last updated at Posted at 2018-02-12

NanoPi NEOのLED

NanoPi NEOにはボード上のマイクロSDカードスロットとマイクロUSBコネクタの間に緑と青の2つのLEDがあります。
デフォルトの動作は以下の通り。

  • 緑はPower LEDで電源が入るとずっと点灯
  • 青はStatus LEDでカーネルが起動した後に点滅。

これらのLEDはLinuxのled class デバイスドライバとして実装されているので、Linuxの標準の方法で制御することができます。

LEDクラスドライバ

カーネルのドキュメント
https://www.kernel.org/doc/Documentation/leds/leds-class.txt

/sys/class/leds を散策してみます。

# cd /sys/class/leds/
# ls
nanopi:blue:status  nanopi:green:pwr
# cd nanopi\:blue\:status/
# ls -l
total 0
-rw-r--r--    1 root     root          4096 Jan  1 02:09 brightness
lrwxrwxrwx    1 root     root             0 Jan  1 02:09 device -> ../../../leds
-rw-r--r--    1 root     root          4096 Jan  1 02:09 invert
-r--r--r--    1 root     root          4096 Jan  1 02:09 max_brightness
drwxr-xr-x    2 root     root             0 Jan  1 02:09 power
lrwxrwxrwx    1 root     root             0 Jan  1 02:09 subsystem -> ../../../../../class/leds
-rw-r--r--    1 root     root          4096 Jan  1 02:09 trigger
-rw-r--r--    1 root     root          4096 Jan  1 02:09 uevent
# cat trigger 
none rfkill-any kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc0 [heartbeat] default-on 
# 

起動時に青LEDが点滅するのは、heartbeatをトリガーにしていました。

brightnessに値を書き込んで点灯消灯させる例

緑のLEDを1秒点灯、0.2秒消灯を繰り返す。
ゆったりした正常動作っぽい感じの表示になります。(主観です。)

#!/bin/sh

echo none > /sys/class/leds/nanopi:green:pwr/trigger

while :;do
  echo 1 > /sys/class/leds/nanopi:green:pwr/brightness
  sleep 1
  echo 0 > /sys/class/leds/nanopi:green:pwr/brightness
  sleep 0.2
done

青のLEDを0.05秒点灯、0.05秒消灯を繰り返す。
イライラしたエラーっぽい感じの表示になります。(主観です。)

#!/bin/sh

echo none > /sys/class/leds/nanopi:blue:status/trigger

while :;do
  echo 1 > /sys/class/leds/nanopi:blue:status/brightness
  sleep 0.05
  echo 0 > /sys/class/leds/nanopi:blue:status/brightness
  sleep 0.05
done

点灯時間と消灯時間を指定して点滅させる例

時間の制御をカーネル自身にやらせることもできます。
triggerにtimerを指定するのですが、NanoPi NEOのデフォルトのカーネルではこれが有効になっていないので、カーネルのコンフィグに以下を追加してカーネルをリビルドします。

CONFIG_LEDS_TRIGGER_TIMER=y

緑のLEDを1秒点灯、0.2秒消灯を繰り返す。

#!/bin/sh
echo timer > /sys/class/leds/nanopi:green:pwr/trigger
echo 1000 > /sys/class/leds/nanopi:green:pwr/delay_on 
echo 200 > /sys/class/leds/nanopi:green:pwr/delay_off

青のLEDを0.05秒点灯、0.05秒消灯を繰り返す。

#!/bin/sh
echo timer > /sys/class/leds/nanopi:blue:status/trigger
echo 50 > /sys/class/leds/nanopi:blue:status/delay_on 
echo 50 > /sys/class/leds/nanopi:blue:status/delay_off

両方のLEDの点滅を止めて消灯。

#!/bin/sh

echo none > /sys/class/leds/nanopi:blue:status/trigger
echo none > /sys/class/leds/nanopi:green:pwr/trigger

echo 0 > /sys/class/leds/nanopi:blue:status/brightness
echo 0 > /sys/class/leds/nanopi:green:pwr/brightness
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3