所有的树莓派型号或多或少都自带了一些 LED,早期的型号例如 1 代 B 型,会板载 PWR(电源)、ACT(活动)以及网络状态 LED。在 B+ 之后的型号,网络状态 LED 被移到了网口上,主板上只剩下 2 个 LED,红色的 PWR 和 绿色的 ACT。正常情况下,除非电源电压低于 4.5V 以下,否则 PWR 电源 LED 会保持常亮。
幸运的是,在树莓派 2B、B+、A+ 和 Zero 型号中,提供了几种方法来控制这些 LED。最简单的方式是对下面的文件进行配置来实现:
/sys/class/leds/led[LED_ID]/trigger
其中[LED_ID]需要替换为 0(代表 ACT LED)或 1(代表 PWR LED)。
例如:
# Set the PWR LED to GPIO mode (set ‘off’ by default). echo gpio | sudo tee /sys/class/leds/led1/trigger # (Optional) Turn on (1) or off (0) the PWR LED. echo 1 | sudo tee /sys/class/leds/led1/brightness echo 0 | sudo tee /sys/class/leds/led1/brightness # Revert the PWR LED back to ‘under-voltage detect’ mode. echo input | sudo tee /sys/class/leds/led1/trigger # Set the ACT LED to trigger on cpu0 instead of mmc0 (SD card access). echo cpu0 | sudo tee /sys/class/leds/led0/trigger
用这种方法可以关闭 PWR 电源指示灯,为后面数年的使用省下几毛钱电费 -。-
明白了这个原理之后,我们可以设计一个脚本让这 LED 按照我们的需要闪烁起来,就和使用 GPIO 控制外部 LED BlingBling 类似。
from time import sleep led = open(‘/sys/class/leds/led0/brightness’, ‘w’, buffering = 0) while True: led.write(‘0’)#turn on sleep(0.5) led.write(‘1’)#turn off sleep(0.5)
保存为 led0.py 之后,运行 sudo python led0.py 命令即可。代码证 buffering 参数是为了无缓冲写入,这样就不用等到调用文件的 close 方法才能真正写入了。
如果你希望永久禁用这两个 LED,还可以通过添加下面的内容到 /boot/config.txt 的方式来实现:
# Disable the ACT LED. dtparam=act_led_trigger=none dtparam=act_led_activelow=off # Disable the PWR LED. dtparam=pwr_led_trigger=none dtparam=pwr_led_activelow=off
对于树莓派 Zero 来说,板子上只有一个 LED(led0),即 ACT LED。默认为点亮状态,而当该 LED 熄灭则表示磁盘在活动。
如果要完全关闭 Zero 上的 LED,请运行下面的命令:
# Set the Pi Zero ACT LED trigger to ‘none’. echo none | sudo tee /sys/class/leds/led0/trigger # Turn off the Pi Zero ACT LED. echo 1 | sudo tee /sys/class/leds/led0/brightness To make these settings permanent, add the following lines to your Pi’s /boot/config.txt file and reboot: # Disable the ACT LED on the Pi Zero. dtparam=act_led_trigger=none dtparam=act_led_activelow=on