INDEX
BeagleBone Black User LEDs
OpenBSD で、BeagleBone Black の User LEDs を操作する。
最終的には、ディスク・ネットワーク アクセス ランプ 代わりにできたらな…
User LEDs
BeagleBone Black には、4つのユーザLEDが付いている。これらは、GPIO ピンに接続されている。
| LED | GPIO SIGNAL | PROC PIN |
|---|---|---|
| USR0 | GPIO1_21 | V15 |
| USR1 | GPIO1_22 | U15 |
| USR2 | GPIO1_23 | T15 |
| USR3 | GPIO1_24 | V16 |
USR0 が内側(LAN側)、USR3 が外側 になる。
Lチカ
BBB の User LED を点灯させる。
準備
GPIO ピン アクセスは、システム起動時の securelevel 0 で設定されたピンのみがアクセス可能になる。
/etc/rc.securelevel に下記を追加して、セキュアレベルが上がる前にコマンドを実行させ、User LED の設定を行う。
# Set GPIO pin directions for USR LEDs and give them names gpioctl gpio1 21 set out USR0 gpioctl gpio1 22 set out USR1 gpioctl gpio1 23 set out USR2 gpioctl gpio1 24 set out USR3
セキュアレベルが上がると、下げることはできないので、設定を行った後、反映させるために再起動が必要になる。
NetBSD もセキュアレベルが上がる前に GPIO の初期化を行う必要があるが、/etc/rc.conf で gpio=YES で有効にして、/etc/gpio.conf で GPIO の設定を行うことができるっぽい…
点灯
gpioctl(8) コマンドで、GPIO ピン に対して on(1) / off(0) または toggle(2) でステータスを更新して、LED を点灯/消灯させる。名前を定義してる場合は、ピン番号でなく設定した名前で指定することもできる。
bbb# gpioctl gpio1 21 pin 21: state 0 bbb# gpioctl gpio1 21 on pin 21: state 0 -> 1 bbb# gpioctl gpio1 22 on pin 22: state 0 -> 1 bbb# gpioctl gpio1 23 on pin 23: state 0 -> 1 bbb# gpioctl gpio1 24 on pin 24: state 0 -> 1 bbb# gpioctl gpio1 24 off pin 24: state 1 -> 0 bbb# gpioctl gpio1 23 off pin 23: state 1 -> 0 bbb# gpioctl gpio1 22 off pin 22: state 1 -> 0 bbb# gpioctl gpio1 21 off pin 21: state 1 -> 0 bbb# gpioctl gpio1 USR0 pin USR0: state 0 bbb# gpioctl gpio1 USR1 pin USR1: state 0 bbb# gpioctl gpio1 USR2 pin USR2: state 0 bbb# gpioctl gpio1 USR3 pin USR3: state 0 bbb#
Lチカ
ALL
bbb# cat /etc/rc.securelevel # Set GPIO pin directions for USR LEDs and give them names gpioctl gpio1 21 set out USR0 gpioctl gpio1 22 set out USR1 gpioctl gpio1 23 set out USR2 gpioctl gpio1 24 set out USR3 # USR LEDs on/off gpioctl -q gpio1 USR0 on gpioctl -q gpio1 USR1 on gpioctl -q gpio1 USR2 on gpioctl -q gpio1 USR3 on sleep 0.5 gpioctl -q gpio1 USR0 off gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR3 off bbb#
bbb# cat /etc/rc.local #!/bin/sh # 〜中略〜 # USR LEDs blink gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off sleep 0.5 gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off bbb#
USR3
起動時のON
bbb# cat /etc/rc.local #!/bin/sh # 〜中略〜 # BeagleBone Black User LED - USR3 on gpioctl -q gpio1 USR3 on
シャットダウン時のOFF
bbb# cat /etc/rc.shutdown # BeagleBone Black User LED - USR3 off gpioctl -q gpio1 USR3 off
USR0
0.5秒おきに点滅させる
bbb# crontab -l # 〜中略〜 # BeagleBone Black User LED - USR0 on #@reboot gpioctl -q gpio1 USR0 on # BeagleBone Black User LED - USR0 on/off #* * * * * for i in `seq 0 2 59`;do (gpioctl -q gpio1 USR3 on; sleep 1; gpioctl -q gpio1 USR3 off;) done; #* * * * * for i in `seq 0 1 119`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done; #* * * * * gpioctl -q gpio1 USR0 on; for i in `seq 0 1 118`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done; @reboot while true; do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done;
最終更新時間:2024年05月31日 13時09分06秒 指摘や意見などあればSandBoxのBBSへ。