我想知道是否可以通过软件控制其中的任何一个,即打开它们或更改强度(或什至改变颜色喘气)。当原始用途不需要LED时,它们可能是一种非常方便的信号通知用户应用程序状态。
#1 楼
可以通过用户空间软件控制OK LED。详细信息在这里:Re:我们可以控制板上的LEDs吗?从以上总结(全部归BrianW所有):触发器”,让内核的其他部分控制LED。 LED的默认触发器是“
/sys/class/leds/led0/
”,当访问SD卡时它会亮起。可以使用“ mmc0
”文件打开和关闭LED。最小亮度为0,最大亮度为255。由于不支持可变亮度,因此任何大于0的值都会打开LED。root@raspberrypi:~# cat /sys/class/leds/led0/trigger
none [mmc0]
将亮度设置为0会自动将触发器设置为“ none”。
如果您希望LED恢复其默认功能:
echo none >/sys/class/leds/led0/trigger
您可以加载几个内核模块(
mmc0
和brightness
),它们会闪烁适用于您的LED。echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness
一旦关闭了
ledtrig_timer
触发器,就可以使用GPIO16来控制LED。它为低电平有效,因此您需要将引脚设置为低电平以打开LED,而将其设置为高电平以将其关闭。在Python中,您可以使用模块
ledtrig_heartbeat
控制引脚16。 。示例代码
echo mmc0 >/sys/class/leds/led0/trigger
评论
仅供参考,在Raspberry Pi 2上,您最终也可以控制PWR LED!使用echo gpio将其切换为GPIO模式| sudo tee / sys / class / leds / led1 / trigger,然后使用echo [0 | 1]启用或禁用| sudo tee / sys / class / leds / led1 /亮度。
–geerlingguy
15年3月12日在2:59
对于想知道如何从命令行执行此操作的人(无需具有写入/ sys / class的超级用户权限...),请首先将LED设置为在gpio上触发,然后安装WiringPi learning.sparkfun.com/tutorials/树莓派-gpio / c-wiringpi-setup之后,您就可以“ $ gpio -g模式16输出&& gpio -g写16 0”来打开led了(关闭1
– joonas.fi
17-2-17在11:37
好答案!要添加以下内容:通过LED多路复用,LED有效地具有亮度支持。在两个单独的终端窗口中通过SSH连接到Raspi,一个用于即时更改配置,另一个用于创建一定的负载(=触发事件)。在配置终端中,通过echo cpu> / sys / class / leds / led0 / trigger将CPU设置为触发器。当Raspi闲置时,LED会非常暗。当您启动顶部时,LED会很快发光(最长1秒)。在顶部,您会看到Raspi处于99%空闲状态。然后运行yes,不断打印“ y”,从而使CPU处于最大压力,LED变得完全亮!
– porg
20-10-28在1:04
#2 楼
板上的LED均无法通过软件进行控制-它们全部用于其他用途。确定-表示已访问SD卡
PWR-表示为微型USB供电connection
FDX-全双工LAN
LNK-LAN活动
10M-10M / 100M连接速度-如果点亮,则RPi以100M连接。
现在,这就是正式答案……让我们研究一下原理图。
第4页PWR LED直接连接到电源,因此我们无法通过软件进行控制。
第3页FDX,LNK和10M都连接到以太网芯片,因此我们再次无法在软件中对其进行控制(没有一些时髦的流量黑客……)。 OK实际上是由GPIO 16控制的,因此有可能被黑客入侵...
评论
@AlexChamberlain LED的定义不错。但是我们真的确定它们不能由软件控制吗?网络LED是在固件控制下还是在实际硬件下?而且,如果它们是由固件控制的,我们可以以某种方式进行反向工程吗?
–玛丽亚·兹维里娜(Maria Zverina)
2012年6月26日9:38
查看原理图-PWR直接连接到电源,FDX,LNK和10M直接连接到以太网芯片。如我所说,您可能可以破解OK LED。
–亚历山大·张伯伦
2012年6月26日9:43
亚历克斯是正确的。 BCM芯片无法控制这些LED(GPIO16除外);因此,没有软件可以访问它们,甚至没有低级内核代码。您将不得不破解LAN芯片或为这些LED灯创建自己的短路电路,这实际上不是一个好主意。为什么不添加自己的?
– Piotr Kula
2012年8月9日在10:13
在我看来,这个其他答案至少表明该答案的至少一部分(和一些评论)是错误的。我看得对吗?也许只有OK(在我的Rev B.板上标有“ ACT”)可以被控制,但是似乎可以控制。 (不过,我还没有实际尝试过。)
– lindes
13年10月28日在19:01
只是确认“所有板载LED都无法用软件控制-它们全部用于其他用途”这一说法是错误的。我在树莓派3和4s上测试了可接受的响应。这是我在上面进行验证时使用的命令...打开两个LED echo 1 | sudo tee / sys / class / leds / led {0,1} /亮度关闭两个LED回声0 | sudo tee / sys / class / leds / led {0,1} /亮度将“心跳”触发器附加到两个LED上sudo tee / sys / class / leds / led {0,1} / trigger
–安德鲁·奥尔布赖特(Andrew Allbright)
20年1月13日,0:01
#3 楼
您可以控制所有led(如其他答案中所述,旧的Pi模型中的PWR除外)。 />有关如何重新编译的信息,请参见: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和eth_spd 。
示例:echo 0> / sys / class / smsc95xx_leds / eth_fdx echo 1> / sys / class / smsc95xx_leds / eth_fdx
#4 楼
有一种更简单的方法可以从用户区控制LAN LED。源代码可从http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=72070
使用sudo运行。 。
#5 楼
我可以确认使用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的更多方法,请参见盖伊的答案
评论
在树莓派零上,“回声0 ...”将其打开!不关
– NilsB
18年4月27日在7:54
#6 楼
我编写了一个用户空间程序,该程序可让您控制以太网LED。该程序需要较新的
libusb-1.0
(而不是较早的0.1)。它可与LAN9512配合使用(例如在较旧的Raspberry B上) )以及LAN9514芯片(例如,在Raspberry B +或Raspberry 2上)
可在此处找到详细信息:LAN951x LED控件
评论
由于链接的内容很小,因此最好将其包含在答案中,并用大括号括起来,因为链接将来可能会消失。如果确实如此,那么您的答案将不会有太大用处。另外,在此处也提供github链接。
– Greenonline
18年8月17日在20:47
#7 楼
使用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。两者都可以控制LED,尽管每当有人访问SD卡时Raspbian都会覆盖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")
评论
在Raspberry Pi 3上,此示例程序似乎始终使操作系统崩溃/死机。
–中心
20年6月21日在16:37
评论
是的-我知道我可以轻松地将LED添加到GPIO输出上-但是我很好奇没有外部硬件怎么办。LED通常是单色的(特别是在一种用途时),因此您可以忽略该部分:)
@Jivings同意,考虑到RPi的成本,它们可能是单色的...但是问这个问题从来没有什么麻烦:)