題:
如何使用我的軟件控制系統LED?
Maria Zverina
2012-06-26 01:07:46 UTC
view on stackexchange narkive permalink

RPi上有5個LED:OK,PWR,FDX,LNK,10M。

我想知道是否可以通過軟件控制任何這些LED,即打開它們,或者更改強度(甚至更改顏色 gasp )。

如果是這樣,我在哪裡可以讀到它?當原始使用不需要LED時,它們可能是一種非常方便的信號通知用戶應用程序狀態。

是的-我知道我可以輕鬆地將LED添加到GPIO輸出上-但是我很好奇沒有外部硬件該怎麼辦。
LED通常是單色的(尤其是在出於一種目的需要時),因此您可以忽略該部分:)
@Jivings同意,考慮到RPi的成本,它們可能是單色的...但是問這個問題一點也不為過:)
七 答案:
Guy
2012-08-09 03:09:14 UTC
view on stackexchange narkive permalink

可以通過用戶空間軟件控制OK LED。此處的詳細信息:回复:我們可以控制板載LED了嗎?

總結如下(所有信息均歸功於BrianW):

OK LED可用作為 / sys / class / leds / led0 /

內核LED驅動器具有“觸發器”,可讓內核的其他部分控制LED。 LED的默認觸發器是' mmc0 ',當訪問SD卡時,它會亮起。

  root @ raspberrypi:〜#cat / sys / class / leds / led0 / triggernone [mmc0]  

您可以按以下方式停用 mmc0 觸發器:

 不回顯> / sys / class / leds / led0 / trigger  

可以使用“ 亮度”文件來打開和關閉LED。最小亮度為0,最大亮度為255。由於不支持可變亮度,因此任何大於0的值都將打開LED。

  echo 1 > / sys / class / leds / led0 / brightnessecho 0 > / sys / class / leds / led0 / brightness  

將亮度設置為0會自動將觸發器設置為“ none”。

如果希望LED返回其默認功能:

  echo mmc0 > / sys / class / leds / led0 / trigger  

有兩個您可以加載內核模塊( ledtrig_timer ledtrig_heartbeat ),這些模塊將為您閃爍LED。

  modprobe ledtrig_heartbeatecho心跳> / sys / class / leds / led0 / trigger  

一旦您關閉了 mmc0 觸發器,就可以使用GPIO16來控制LED。它為低電平有效,因此您需要將引腳設置為低電平以打開LED,將其設置為高電平以將其關閉。

在Python中,您可以使用模塊 RPi.GPIO 來控制引腳16。還有一個C#驅動程序。

示例代碼

 #!/ usr / bin / pythonimport RPi.GPIO作為來自時間導入的GPIO sleep#需要是BCM。 GPIO.BOARD可讓您按周向尋址GPIO端口
#連接器引腳號,並且LED GPIO不在連接器上GPIO.setmode(GPIO.BCM)#設置GPIO輸出通道GPIO.setup(16,GPIO.OUT)#OnGPIO.output(16,GPIO.LOW)#等待一個bitsleep(10)#OffGPIO.output(16,GPIO.HIGH) 
僅供參考,在Raspberry Pi 2上,您最終也可以控制PWR LED!用`echo gpio |切換到GPIO模式。 sudo tee / sys / class / leds / led1 / trigger`,然後使用`echo [0 | 1] | sudo tee / sys / class / leds / led1 / brightness`。
對於想知道如何從命令行執行此操作的人(無需具有寫入/ sys / class的超級用戶權限...),請首先將LED設置為在gpio上觸發,然後安裝WiringPi https://learn.sparkfun。 com / tutorials / raspberry-gpio / c-wiringpi-setup之後,您只需“ $ gpio -g模式16輸出&& gpio -g寫16 0”即可將led點亮(將1熄滅)
Alex Chamberlain
2012-06-26 01:14:16 UTC
view on stackexchange narkive permalink

板載LED均無法通過軟件控制-它們全部用於其他用途。

  • 確定-表示已訪問SD卡
  • PWR-表示電源到微型USB連接
  • FDX-全雙工LAN
  • LNK-LAN活動
  • 10M-10M / 100M連接速度-如果點亮,則RPi現在連接到100M。

現在,這是正式答案...讓我們研究示意圖

第4頁 PWR LED直接連接到電源,因此我們無法在軟件中進行控制。

第3頁 FDX,LNK和10M均已連接到電源。以太網芯片,因此我們同樣無法在軟件中控制它們(沒有時髦的流量黑客……)。

第4頁 OK實際上是由GPIO 16控制的,因此有可能被黑客入侵...

@AlexChamberlain LED的定義不錯。但是我們真的確定它們不能由軟件控制嗎?網絡LED是在固件控制下還是在實際硬件下?而且,如果它們是由固件控制的,我們是否可以進行反向工程?
查閱[schematic](http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf)-PWR直接連接到電源,而FDX ,LNK和10M到以太網芯片。如我所說,您可能可以破解OK LED。
亞歷克斯是正確的。 BCM芯片無法控制這些LED(GPIO16除外);因此,沒有軟件可以訪問它們,甚至沒有低級內核代碼。您將不得不破解LAN芯片或為這些LED燈創建自己的短路電路,這實際上不是一個好主意。為什麼不添加自己的?
在我看來,[該另一個答案](http://raspberrypi.stackexchange.com/a/1504/10266)至少表明此答案的一部分(和一些評論)是錯誤的。我看得對嗎?可能只有“ OK”(在我的Rev B.板上標有“ ACT”)可以控制,但似乎可以控制。 (不過,我還沒有實際嘗試過。)
只需確認“所有板載LED都無法用軟件控制-它們全部用於其他用途”這一說法是錯誤的。我在樹莓派3和4s上測試了可接受的響應。這是我在上面進行驗證時使用的命令...同時打開兩個LED'echo 1'。 sudo tee / sys / class / leds / led {0,1} / brightness`關閉兩個LED。 sudo tee / sys / class / leds / led {0,1} / brightness`將“心跳”觸發器附加到兩個LED上。 sudo tee / sys / class / leds / led {0,1} / trigger`
順便說一句,在[較新的](https://www.raspberrypi.org/app/uploads/2018/11/Raspberry_Pi_3A_schematics.pdf)[版本](https://www.raspberrypi.org/documentation/hardware/raspberrypi / Raspberry Pi]的/schematics/rpi_SCH_3bplus_1p0_reduced.pdf)(https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_4b_4p0_reduced.pdf),“狀態確定LED”被稱為“狀態“ ACT” LED”。 “ POWER ON LED”被稱為“ POWER OK“ PWR” LED`。這次修訂是合理的,因為新名稱更加清晰(因為“觀察到對SD的訪問”不一定等於“狀態還可以”)。
czar
2013-12-03 00:32:43 UTC
view on stackexchange narkive permalink

您可以控制所有led(如其他答案中所述,舊的Pi模型中的PWR除外)。

但是對於以太網led,您需要打補丁驅動程序並重新編譯內核。

有關如何進行重新編譯的信息,請參見: http://elinux.org/RPi_Kernel_Compilation

此處提供修補程序和更多信息(如果需要,請提供Google翻譯): http ://everpi.tsar.in/2013/11/patch-para-controlar-os-leds-ethernet-do-raspberrypi.html

完成後,您可以控制:/ sys / class / smsc95xx_leds和eth_fdx,eth_lnk和eth_spd。

示例:echo 0> / sys / class / smsc95xx_leds / eth_fdx echo 1> / sys / class / smsc95xx_leds / eth_fdx

joan
2014-04-12 18:06:44 UTC
view on stackexchange narkive permalink

有一種更簡單的方法可以從用戶區控制LAN LED。可以從

http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=72070

獲得源代碼與sudo一起運行。

Patrick
2015-02-21 12:31:16 UTC
view on stackexchange narkive permalink

我可以確認使用Raspberry Pi 2也可以控制PWD LED!

電源LED由以下文件中的文件控制:

  / sys / class / leds / led1  

您可以像使用狀態LED一樣將其關閉:

  echo 0 > / sys / class / leds / led1 /亮度#電源LEDecho 0 > / sys / class / leds / led0 /亮度#狀態LED  

有關控制LED的更多方法,請參見蓋伊的答案

在樹莓派零上,“迴聲0 ...”將其打開!不關
blip
2015-12-20 22:56:50 UTC
view on stackexchange narkive permalink

我寫了一個用戶空間程序,可以控制以太網LED。

該程序需要更新的 libusb-1.0 (不是舊的0.1)。它與LAN9512一起使用。 (例如在較舊的Raspberry B上)以及LAN9514芯片(例如在Raspberry B +或Raspberry 2上)

詳細信息請參見: LAN951x LED控件

由於鏈接的內容很小,因此最好將其包含在您的答案中,並用引號引起來,因為該鏈接將來可能會消失。如果確實如此,那麼您的答案將不會有太大用處。另外,在此處也提供github鏈接。
TomXP411
2015-09-10 07:57:56 UTC
view on stackexchange narkive permalink

使用Pi 2,您可以控制板上的紅色和綠色LED。

Windows 10 IoT文檔分別列出了GPIO 35和47上的紅色電源LED和綠色的OK LED。

https://ms-iot.github.io/content/zh-cn/win10/samples/PinMappingsRPi2.htm

我嘗試了Windows 10 IoT和Raspbian上的Python。儘管當有人訪問SD卡時Raspbian都會覆蓋LED,但兩者都可以控制LED。大概清除觸發器將消除此行為。)

這裡是一個示例。 (請注意,這不會像以前的文章中所述覆蓋觸發器)

  print(“程序啟動”)將RPi.GPIO導入為GPIOimport時間通道= [35,47] print(“關閉LED的)GPIO.setmode(GPIO.BCM)GPIO.setup(通道,GPIO.OUT)GPIO.output(通道,GPIO.LOW)time.sleep(5)print(“打開LED的”)GPIO.output(通道,GPIO.HIGH)time.sleep(5)GPIO.cleanup()print(“程序結束”) 
在Raspberry Pi 3上,該示例程序似乎始終使操作系統崩潰/死機。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...