Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rock/LED"

(Rock/LED)
(LEDs as GPIOs)
Line 61: Line 61:
 
* sleep
 
* sleep
 
* rfkill0
 
* rfkill0
 
= LEDs as GPIOs =
 
 
On the previous kernel images, the LEDs can be controlled as GPIOs.
 
 
Below is program in different languages to flash the green led on RR.
 
 
== C ==
 
<syntaxhighlight lang="c" enclose="div">
 
 
#include <stdio.h>
 
 
int main()
 
{
 
  FILE *fp = fopen("/sys/class/gpio/export", "w");
 
  if( !fp )
 
  {
 
    printf("error open export file");
 
    return 1;
 
  }
 
  fprintf(fp, "%d", 172);
 
  fclose(fp);
 
 
  fp = fopen("/sys/class/gpio/gpio175/direction", "w");
 
 
  if( !fp )
 
  {
 
    printf("error open export file");
 
    return 1;
 
  }
 
  fprintf(fp, "%s", "out");
 
  fclose(fp);
 
 
  fp = fopen("/sys/class/gpio/gpio175/value", "w");
 
 
  if( !fp )
 
  {
 
    printf("error open export file");
 
    return 1;
 
  }
 
  fprintf(fp, "%d", 1);
 
 
 
}
 
 
</syntaxhighlight>
 
 
== Python ==
 
<syntaxhighlight lang="python" enclose="div">
 
 
import time
 
 
def initpin(pinnum, mode):
 
  '''
 
  pinnum: pin number, eg. 172, 175 etc.
 
  mode: pin mode, valid values: in or out
 
  '''
 
  with open('/sys/class/gpio/export', 'w') as f:
 
    f.write(str(pinnum))
 
 
  with open('/sys/class/gpio/gpio' + str(pinnum) + '/direction', 'w') as f:
 
    f.write(str(mode))
 
 
def setpin(pinnum, value):
 
 
 
  with open('/sys/class/gpio/gpio' + str(pinnum) + '/value', 'w') as f:
 
    f.write(str(value))
 
 
if __name__ == '__main__':
 
  initpin(172, 'out')
 
  while True:
 
    setpin(172, 0)
 
    time.sleep(1)
 
    setpin(172, 1)
 
    time.sleep(1)
 
</syntaxhighlight>
 
 
== Shell ==
 
<syntaxhighlight lang="bash" enclose="div">
 
 
#!/bin/sh
 
 
# enable the gpio 172 -> green led
 
echo 172 > /sys/class/gpio/export
 
 
# set the direction to output
 
echo "out" > /sys/class/gpio/gpio172/direction
 
while true;
 
do
 
echo 0 > /sys/class/gpio/gpio172/value #led on
 
sleep 1
 
echo 1 > /sys/class/gpio/gpio172/value #led off
 
sleep 1
 
done
 
 
</syntaxhighlight>
 

Revision as of 03:08, 18 September 2014

The Radxa Rock has 3 LEDs on board.

LED GPIO ref. GPIO number
Green GPIO0_B4 172
Blue GPIO0_B6 174
Red GPIO0_B7 175

All are programmable using either LEDs class devices or GPIOs.

LEDs as class devices

On the latest kernel images (Ubuntu 14.04 server/desktop), the 3 LEDs are configured as LED class devices.

You can control them via /sys/class/leds/

Read the documentation for more information: https://www.kernel.org/doc/Documentation/leds/leds-class.txt

The default status of the three on board leds are:

  • Red: On when there is power
  • Green: Flash twice per second after the kernel booting, it's called heartbeat.
  • Blue: Flash when the uSD card is reading/writing.

You can change the behaviour of each LED by using the echo command on their trigger property.

   root@radxa:~ # echo none > /sys/class/leds/red/trigger
   root@radxa:~ # echo default-on > /sys/class/leds/red/trigger
   root@radxa:~ # echo timer > /sys/class/leds/red/trigger
   root@radxa:~ # echo heartbeat > /sys/class/leds/red/trigger

You can use cat on the trigger property to list all the available values.

   root@radxa:~ # cat /sys/class/leds/red/trigger
   none test_ac-online test_battery-charging-or-full test_battery-charging test_battery-full test_battery-charging-blink-full-solid mmc0 mmc1 timer [heartbeat] backlight gpio default-on sleep rfkill0

Here is the list of current triggers:

  • none
  • test_ac-online
  • test_battery-charging-or-full
  • test_battery-charging
  • test_battery-full
  • test_battery-charging-blink-full-solid
  • mmc0
  • mmc1
  • timer
  • heartbeat
  • backlight
  • gpio
  • default-on
  • sleep
  • rfkill0