RPiには、OK、PWR、FDX、LNK、10Mの5つのLEDがあります。
ソフトウェアからこれらのいずれかを制御できるかどうか、つまりそれらをオンにしたり、強度を変更したり(さらには色のギャップを変更したり)できるかどうかを知りたいのです。
もしそうなら、どこでそれについて読むことができますか?LEDは、元の使用に必要ない場合にユーザーアプリケーションの状態を通知する非常に便利な方法です。
RPiには、OK、PWR、FDX、LNK、10Mの5つのLEDがあります。
ソフトウェアからこれらのいずれかを制御できるかどうか、つまりそれらをオンにしたり、強度を変更したり(さらには色のギャップを変更したり)できるかどうかを知りたいのです。
もしそうなら、どこでそれについて読むことができますか?LEDは、元の使用に必要ない場合にユーザーアプリケーションの状態を通知する非常に便利な方法です。
回答:
OK LEDは、ユーザースペースソフトウェアから制御できます。詳細はこちら:再:オンボードLEDを制御できますか
上記から要約(すべてBrianWにクレジット):
OK LEDはとして利用できます/sys/class/leds/led0/
。
カーネルLEDドライバーには、カーネルの他の部分でLEDを制御できる「トリガー」があります。LEDのデフォルトのトリガーは ' mmc0
'で、SDカードにアクセスすると点灯します。
root@raspberrypi:~# cat /sys/class/leds/led0/trigger
none [mmc0]
mmc0
次のようにしてトリガーを無効にできます。
echo none >/sys/class/leds/led0/trigger
LEDは、「brightness
」ファイルを使用してオンおよびオフにできます。最小輝度は0で、最大輝度は255です。可変輝度サポートはないため、0より大きい値はLEDをオンにします。
echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness
輝度を0に設定すると、トリガーが自動的に「なし」に設定されます。
LEDをデフォルトの機能に戻したい場合:
echo mmc0 >/sys/class/leds/led0/trigger
LEDを点滅させるカーネルモジュール(ledtrig_timer
およびledtrig_heartbeat
)をロードできます。
modprobe ledtrig_heartbeat
echo heartbeat >/sys/class/leds/led0/trigger
mmc0
トリガーをオフにすると、GPIO16を使用してLEDを制御できます。アクティブローなので、ピンをローに設定してLEDをオンにし、ハイに設定してLEDをオフにする必要があります。
Pythonでは、モジュールRPi.GPIO
を使用してピン16を制御できます。C#ドライバーもあります。
サンプルコード
#!/usr/bin/python import RPi.GPIO as GPIO from time import sleep # Needs to be BCM. GPIO.BOARD lets you address GPIO ports by periperal # connector pin number, and the LED GPIO isn't on the connector GPIO.setmode(GPIO.BCM) # set up GPIO output channel GPIO.setup(16, GPIO.OUT) # On GPIO.output(16, GPIO.LOW) # Wait a bit sleep(10) # Off GPIO.output(16, GPIO.HIGH)
echo gpio | sudo tee /sys/class/leds/led1/trigger
、でオンまたはオフにしecho [0|1] | sudo tee /sys/class/leds/led1/brightness
ます。
オンボードLEDはいずれもソフトウェアで制御できません。これらはすべて他の目的に使用されます。
さて、それが公式の答えです... 回路図を勉強しましょう。
Page 4 PWR LEDは電源に直接接続されているため、ソフトウェアで制御することはできません。
Page 3 FDX、LNK、および10Mはすべてイーサネットチップに接続されているため、ソフトウェアでそれらを制御することはできません(ファンキーなトラフィックハックがなければ...)。
Page 4 しかし、実際にはGPIO 16によって制御されているため、ハッキングの可能性があります...
ユーザーランドからLAN LEDを制御する簡単な方法があります。ソースコードはから入手可能です
http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=72070
プログラムはsudoで実行する必要があります。
すべてのLEDを制御できます(他の回答で述べたように、古いPiモデルのPWRを除く)。
しかし、イーサネットLEDの場合、ドライバーにパッチを適用し、カーネルを再コンパイルする必要があります。
再コンパイルの方法に関する情報はこちら:http : //elinux.org/RPi_Kernel_Compilation
パッチと詳細情報はこちら(必要に応じてグーグル翻訳):http : //everpi.tsar.in/2013/11/patch-para-controlar-os-leds-ethernet-do-raspberrypi.html
完了後、/ sys / class / smsc95xx_ledsおよびeth_fdx、eth_lnk e eth_spdを制御できます。
例:echo 0> / sys / class / smsc95xx_leds / eth_fdx echo 1> / sys / class / smsc95xx_leds / eth_fdx
Raspberry Pi 2では、PWD LEDも制御できることを確認できます!
電源LEDは、次のファイルによって制御されます。
/sys/class/leds/led1
以下を使用して、ステータスLEDと同じようにオフにできます。
echo 0 > /sys/class/leds/led1/brightness # Power LED
echo 0 > /sys/class/leds/led0/brightness # Status LED
LEDを制御するその他の方法については、Guyの回答をご覧ください
イーサネットLEDを制御できるユーザースペースプログラムを作成しました。
プログラムには、より新しいlibusb-1.0
(古い0.1ではありません)が必要です。LAN9512チップ(古いRaspberry Bなど)およびLAN9514チップ(Raspberry B +またはRaspberry 2など)で動作します。
詳細は、LAN951x LEDコントロールをご覧ください。
Pi 2では、オンボードの赤と緑の両方のLEDを制御できます。
Windows 10 IoTのドキュメントには、GPIO 35と47にそれぞれ赤色の電源LEDと緑色のOk LEDがリストされています。
https://ms-iot.github.io/content/en-US/win10/samples/PinMappingsRPi2.htm
Windows 10 IoTとRaspbian上のPythonを試しました。どちらもLEDを制御できますが、Raspbianは何かがSDカードにアクセスするたびにLEDをオーバーライドします。おそらく、トリガーをクリアすると、この動作が削除されます。)
これがサンプルです。(これは以前の投稿で述べたようにトリガーをオーバーライドしないことに注意してください)
print ("Program Start")
import RPi.GPIO as GPIO
import time
channels = [35, 47]
print ("Turning off LED's")
GPIO.setmode(GPIO.BCM)
GPIO.setup(channels, GPIO.OUT)
GPIO.output(channels, GPIO.LOW)
time.sleep(5)
print ("Turning on LED's")
GPIO.output(channels, GPIO.HIGH)
time.sleep(5)
GPIO.cleanup()
print ("Program End")