努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:os:linux:debian:bbb-doc002

002.本体LEDでLチカ

2026-08-13
本体の4つ並んだLEDを制御できた

概要

Lチカの為のパーツ類が届くまでの間、BeagleBone Black(BBB)の本体でLチカをやってみる。

本体LED

デモなんかを見るとここを制御できる模様。


引用:BeagleBone Black 公式ドキュメントPDF 66ページ

ソフトウエア

今回はGPIOではなくお手軽に仮想ファイルシステムで行くよ!

下調べ

Linuxには仮想ファイルシステムなるものがあり、ハードウエアもファイルとして扱う事が出来たりする。

debian@BeagleBone:~$ ls -l /sys/class/leds
合計 0
lrwxrwxrwx 1 root root 0  8月 13 03:52 beaglebone:green:usr0 -> ../../devices/platform/leds/leds/beaglebone:green:usr0
lrwxrwxrwx 1 root root 0  8月 13 03:52 beaglebone:green:usr1 -> ../../devices/platform/leds/leds/beaglebone:green:usr1
lrwxrwxrwx 1 root root 0  8月 13 03:52 beaglebone:green:usr2 -> ../../devices/platform/leds/leds/beaglebone:green:usr2
lrwxrwxrwx 1 root root 0  8月 13 03:52 beaglebone:green:usr3 -> ../../devices/platform/leds/leds/beaglebone:green:usr3
lrwxrwxrwx 1 root root 0  8月 13 03:52 mmc0:: -> ../../devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@0/480602fc.target-module/48060000.mmc/leds/mmc0::
lrwxrwxrwx 1 root root 0  8月 13 03:52 mmc1:: -> ../../devices/platform/ocp/48000000.interconnect/48000000.interconnect:segment@100000/481d82fc.target-module/481d8000.mmc/leds/mmc1::
debian@BeagleBone:~$

BBBの場合、“beaglebone:green:usr0”~“beaglebone:green:usr3”が本体LEDのディレクトリになる。
試しに beaglebone:green:usr0へ移動してみる。

debian@BeagleBone:~$ cd /sys/class/leds/beaglebone:green:usr0
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ ls -l
合計 0
-rw-rw-r-- 1 root gpio 4096  8月 12 16:58 brightness
lrwxrwxrwx 1 root gpio    0  8月 12 13:09 device -> ../../../leds
-r--r--r-- 1 root gpio 4096  8月 12 13:09 max_brightness
drwxrwxr-x 2 root gpio    0  8月 12 13:09 power
lrwxrwxrwx 1 root gpio    0  8月 12 13:09 subsystem -> ../../../../../class/leds
-rw-rw-r-- 1 root gpio    0  8月 12 16:58 trigger
-rw-rw-r-- 1 root gpio 4096  8月 12 13:09 uevent
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ cat trigger
none usb-gadget usb-host rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer oneshot disk-activity disk-read disk-write ide-disk mtd nand-disk [heartbeat] backlight gpio cpu cpu0 activity default-on panic netdev mmc1 mmc0 4a101000.mdio:00:link 4a101000.mdio:00:100Mbps 4a101000.mdio:00:10Mbps
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$

triggerは特定のカーネルイベントや動作に連動させるための機能でこの場合はLEDの点灯/消灯の操作。heartbeatが選択されているのでシステム稼働状態を示す事になる。
※ゴメン具体的に何に同期しての点滅か分からない

noneを指定するとイベントでの操作が解除になるのでこれを指定して手動でのON/OFFを試す。

debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ echo none | sudo tee trigger
none
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ cat trigger
[none] usb-gadget usb-host rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer oneshot disk-activity disk-read disk-write ide-disk mtd nand-disk heartbeat backlight gpio cpu cpu0 activity default-on panic netdev mmc1 mmc0 4a101000.mdio:00:link 4a101000.mdio:00:100Mbps 4a101000.mdio:00:10Mbps
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ cat brightness
0
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$

消灯している。
20260813-153544.jpeg

debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ echo 1 | sudo tee brightness
1
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$ cat brightness
1
debian@BeagleBone:/sys/class/leds/beaglebone:green:usr0$

点灯している。
20260813-153742.jpeg

user1~user3も同様に扱えるので、事前に各LEDのtriggerをバックアップしておいてLチカをさせたら元に戻せば良さそうだ。

デモ

LEDを順に点灯点滅するデモ。

BChika.sh
#!/bin/bash
 
orguser0=`sed 's/.*\[\([^]]*\)\].*/\1/' /sys/class/leds/beaglebone:green:usr0/trigger`
orguser1=`sed 's/.*\[\([^]]*\)\].*/\1/' /sys/class/leds/beaglebone:green:usr1/trigger`
orguser2=`sed 's/.*\[\([^]]*\)\].*/\1/' /sys/class/leds/beaglebone:green:usr2/trigger`
orguser3=`sed 's/.*\[\([^]]*\)\].*/\1/' /sys/class/leds/beaglebone:green:usr3/trigger`
 
echo none | sudo tee /sys/class/leds/beaglebone:green:usr0/trigger >/dev/null
echo none | sudo tee /sys/class/leds/beaglebone:green:usr1/trigger >/dev/null
echo none | sudo tee /sys/class/leds/beaglebone:green:usr2/trigger >/dev/null
echo none | sudo tee /sys/class/leds/beaglebone:green:usr3/trigger >/dev/null
 
count=0
 
while [ $count -lt 5 ]
do
 
        echo 1 | sudo tee /sys/class/leds/beaglebone:green:usr0/brightness >/dev/null
        sleep 0.4
        echo 0 | sudo tee /sys/class/leds/beaglebone:green:usr0/brightness >/dev/null
 
        echo 1 | sudo tee /sys/class/leds/beaglebone:green:usr1/brightness >/dev/null
        sleep 0.4
        echo 0 | sudo tee /sys/class/leds/beaglebone:green:usr1/brightness >/dev/null
 
        echo 1 | sudo tee /sys/class/leds/beaglebone:green:usr2/brightness >/dev/null
        sleep 0.4
        echo 0 | sudo tee /sys/class/leds/beaglebone:green:usr2/brightness >/dev/null
 
        echo 1 | sudo tee /sys/class/leds/beaglebone:green:usr3/brightness >/dev/null
        sleep 0.4
        echo 0 | sudo tee /sys/class/leds/beaglebone:green:usr3/brightness >/dev/null
 
        count=$((count + 1))
done
 
echo ${orguser0} | sudo tee /sys/class/leds/beaglebone:green:usr0/trigger >/dev/null
echo ${orguser1} | sudo tee /sys/class/leds/beaglebone:green:usr1/trigger >/dev/null
echo ${orguser2} | sudo tee /sys/class/leds/beaglebone:green:usr2/trigger >/dev/null
echo ${orguser3} | sudo tee /sys/class/leds/beaglebone:green:usr3/trigger >/dev/null

結果

documents/os/linux/debian/bbb-doc002.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki