乐美客SBC专区
直播中

银泽

8年用户 136经验值
擅长:嵌入式技术
私信 关注
[香蕉派江湖]

【HiKey试用体验】三、控制HiKey开发板的Led

流水灯是学习单片机嵌入式编程的必修课,当我们能够在一个单片机上跑流水灯的程序时,说明基本入门了单机机编程。简简单单的一个流水灯,其背后是一系列专业的操作实现的结果。我拿到一块板子,一般都想着怎么烧录程序,怎么跑流水灯,能够做到这里,那么就能用这开发板做点事情了。O(∩_∩)O哈!瞎扯了一下;下面说正题。

HiKey板载了6个LED灯,其中有四盏灯是绿色、一盏黄色、一盏蓝色。

1.png

在默认的状态下,led1、2、3是关掉的,WiFi(yellow)该Led指示灯,在连接上WiFi并且通信过程时会闪。Blue指示灯是蓝牙连接传输数据时闪。USER_LED1用做系统运行过程指示灯。Lemaker WiKi(连接地址http://wiki.lemaker.org/HiKey(LeMaker_version):HiKey_User_LEDs)的使用说明上给出了控制LED的方式

注意:(使用下列指令需要在root 权限下)

echo heartbeat >/sys/class/leds/<led_dir>/trigger      #make a LED flash using heartbeat trigger
cat /sys/class/leds/<led_dir>/trigger                   #show the currently defined trigger
echo none > /sys/class/leds/<led_dir>/trigger           #remove triggers   
echo 1 > /sys/class/leds/<led_dir>/brightness           #turn LED on

echo 0 > /sys/class/leds/<led_dir>/brightness           #turn LED off
根据这个说明,那就可以很容易的编写一个脚本程序来实现Hikey 开发板上Led的流水灯实验。
  1. #############################
  2. #       Filename:blinkyLed.sh
  3. #       Author:silverze
  4. #       Date:2016/4/28
  5. ############################

  6. #step1:turn off all leds
  7. echo 0 > /sys/class/leds/user_led1/brightness
  8. echo 0 > /sys/class/leds/user_led2/brightness
  9. echo 0 > /sys/class/leds/user_led3/brightness
  10. echo 0 > /sys/class/leds/user_led4/brightness

  11. #step2: turn on led1,led3
  12. while((1));
  13. do
  14. echo 1 > /sys/class/leds/user_led1/brightness
  15. sleep 1
  16. echo 0 > /sys/class/leds/user_led1/brightness
  17. echo 1 > /sys/class/leds/user_led2/brightness
  18. sleep 1
  19. echo 0 > /sys/class/leds/user_led2/brightness
  20. echo 1 > /sys/class/leds/user_led3/brightness
  21. sleep 1
  22. echo 0 > /sys/class/leds/user_led3/brightness
  23. echo 1 > /sys/class/leds/user_led4/brightness
  24. sleep 1
  25. echo 0 > /sys/class/leds/user_led4/brightness
  26. done

  27. echo "Led Control  Error!"
下面是使用C语言来编写这个程序:
  1. /**************************************
  2.         Filename:blinkyLed.c
  3.         Author  :silverze
  4.         Date    :2016/5/1
  5. *************************************/
  6. #include
  7. #include
  8. #include
  9. #include


  10. //define the path:
  11. #define LED1 "/sys/class/leds/user_led1/brightness"
  12. #define LED2 "/sys/class/leds/user_led2/brightness"
  13. #define LED3 "/sys/class/leds/user_led3/brightness"
  14. #define LED4 "/sys/class/leds/user_led4/brightness"

  15. int main( void )
  16. {
  17. printf("nThis is a C Program that to control LEDs of Hikey:n");

  18. int led1_fd = open( LED1, O_WRONLY);
  19. int led2_fd = open( LED2, O_WRONLY);
  20. int led3_fd = open( LED3, O_WRONLY);
  21. int led4_fd = open( LED4, O_WRONLY);

  22. if(led1_fd < 0)
  23. {
  24.   printf("Could not open File:%sn",LED1);
  25.   return 0;
  26. }
  27. else if(led2_fd < 0)
  28. {
  29.   printf("Could not open File:%sn",LED2);
  30.   return 0;
  31. }
  32. else if(led3_fd < 0)
  33. {
  34.   printf("Could not open File:%sn",LED3);
  35.   return 0;
  36. }
  37. else if(led4_fd < 0)
  38. {
  39.   printf("Could not open File:%sn",LED4);
  40.   return 0;
  41. }

  42. int i;
  43. for(i = 0; i < 10; i ++)
  44. {
  45.    write( led1_fd, "1", 2);
  46.    printf("Turn On LED1: LED904n");
  47.    sleep(2);
  48.    write( led1_fd, "0", 2);
  49.    write( led2_fd, "1", 2);
  50.    printf("Turn On LED2: LED903n");
  51.    sleep(2);
  52.    write( led2_fd, "0", 2);
  53.    write( led3_fd, "1", 2);
  54.    printf("Turn On LED3: LED902n");
  55.    sleep(2);
  56.    write( led3_fd, "0", 2);
  57.    write( led4_fd, "1", 2);
  58.    printf("Turn On LED4: LED901n");
  59.    sleep(2);
  60.    write( led4_fd, "0", 2);
  61. }
  62. close(led1_fd);
  63. close(led2_fd);
  64. close(led3_fd);
  65. close(led4_fd);
  66. }
实验现象:
VID_20160501_162224.gif


回帖(2)

sunliang

2016-5-4 11:09:04
楼主辛苦了 就是动图看上去不清晰哦!
举报

wanglaideai

2016-5-8 12:54:03
                          
举报

更多回帖

发帖
×
20
完善资料,
赚取积分