Controlling the raspberry pi Zero built-in LED: via BMC pin or led0
The activity LED on the pi PCB is normally driven by "disk" activity but you can control it directly. The PiZero broadcom pin number for the LED differs from the other models so you may tear out your hair if you want to control it from wiringPi or other programming libraries, but from the command line it's called led0 just like all other pi boards.
Command line:
Put LED under manual control:
echo none > /sys/class/leds/led0/trigger
turn on led:
echo 0 >/sys/class/leds/led0/brightness
turn off led:
echo 1 >/sys/class/leds/led0/brightness
Yes, that's backwards from what you would expect. The LED is active-low and the designers didn't encapsulate that detail.
What if you want to control it from a library like WiringPi? Then you need to know the broadcom (BCM) pin wired to the LED. On the Zero (w) it's pin 47. You can test this for yourself at the command line:
gpio -g blink 47
Note: pi zero only has one LED, despite having a led1 in the filesystem path.
Command line:
Put LED under manual control:
echo none > /sys/class/leds/led0/trigger
turn on led:
echo 0 >/sys/class/leds/led0/brightness
turn off led:
echo 1 >/sys/class/leds/led0/brightness
Yes, that's backwards from what you would expect. The LED is active-low and the designers didn't encapsulate that detail.
What if you want to control it from a library like WiringPi? Then you need to know the broadcom (BCM) pin wired to the LED. On the Zero (w) it's pin 47. You can test this for yourself at the command line:
gpio -g blink 47
If you have a non-zero pi, try BCM pin 16. I only deal in zeros, so I cannot confirm.
For controlling the LED0 from C/C++ code I've found two libraries, here's the examples/docs for both: (pigpio) http://abyz.me.uk/rpi/pigpio/cif.html and (wiringpi) http://wiringpi.com/examples/blink/. Don't know which I would use yet. There's at least one thread suggesting pigpio has better latency.
In any case, using wiringpi:
#include
int main (void)
{
wiringPiSetupGpio ();
pinMode (47, OUTPUT) ;
for (;;)
{
digitalWrite (47, HIGH) ; delay (500) ;
digitalWrite (47, LOW) ; delay (500) ;
}
return 0 ;
}
In any case, using wiringpi:
#include
int main (void)
{
wiringPiSetupGpio ();
pinMode (47, OUTPUT) ;
for (;;)
{
digitalWrite (47, HIGH) ; delay (500) ;
digitalWrite (47, LOW) ; delay (500) ;
}
return 0 ;
}
Note: pi zero only has one LED, despite having a led1 in the filesystem path.
Comments