您的位置:首页 > 编程语言 > ASP

【新手入门】树莓派Raspberry学习笔记5 控制板载LED灯

2020-01-15 07:34 1796 查看

树莓派Raspberry Pi3B+学习笔记5

很多教程讲的都是利用GPIO口控制外设,这里讲一讲怎么控制raspberry 3B+的两个板载LED灯PWR和ACT

一、树莓派的两个板载LED

树莓派有两个板载LED,分别是PWR LED和ACT LED,用来指示树莓派的工作状态。PWR LED为led1,ACT LED为led2,我们可以用如下方法进行控制:

1、GPIO控制

将板载LED转为GPIO模式,之后通过控制GPIO口的输出来控制灯的亮灭(我没有找到GPIO口编号…就没有用这种方式了)

2、LX终端控制

在LX终端上输入命令语句进行控制。用户pi是没有权限去修改灯的状态的,故将LED设置为GPIO模式后,可以使用管道“|”加上tee(从标准输入读取写入标准输出和文件),给tee命令提权(sudo),由此写入brightness文件,控制指示灯的亮灭。控制命令如下:

将PWR LED设置为GPIO模式 (默认不亮)

echo gpio | sudo tee /sys/class/leds/led1/trigger # 这时候LED设置为GPIO模式了

启动 (1)/关闭(0) PWR LED

echo 1 | sudo tee /sys/class/leds/led1/brightness # 灯亮
echo 0 | sudo tee /sys/class/leds/led1/brightness # 灯灭

将PWR LED设置回检测电源连接的模式(初始模式)

echo input | sudo tee /sys/class/leds/led1/trigger # 最后调回此模式,作为指示灯

将ACT LED设置为GPIO模式

echo gpio | sudo tee /sys/class/leds/led1/trigger

启动 (1)/关闭(0) ACT LED

echo 1 | sudo tee /sys/class/leds/led0/brightness # 灯亮
echo 0 | sudo tee /sys/class/leds/led0/brightness # 灯灭

将ACT LED设置回初始模式

echo cpu0 | sudo tee /sys/class/leds/led0/trigger # 最后调回此模式,作为指示灯

3、python控制(略有问题…)

在python上写代码控制LED灯(以PWR LED为例):
!!!
!!!!!!先贴代码,后说问题,看完代码后一定一定先往后看!!!!!!!
!!!

from time import sleep
led = open('/sys/class/leds/led1/brightness', 'w')  //打开控制亮灭的文件brightness; w指write,写入文件
while True:
led.write('0')#turn off
sleep(0.5)
led.write('1')#turn on
sleep(0.5)

①在LX终端上将LED设置为GPIO模式:echo gpio | sudo tee /sys/class/leds/led1/trigger
②树莓派上默认运行的pi用户是没有权限打开brightness这个文件的,直接运行程序会报错permission denied。我解决这个问题的方法是开放了brightness的权限… 后面一篇学习笔记说到如何修改树莓派里linux系统的文件权限
③取得权限后就可以在循环里写入值来控制LED的亮灭啦,然后我遇到了问题… 下面说一下…
(1) turn off是没有问题的:我们可以现在LX终端上点亮PWR LED,之后在python中通过led.write(‘0’)将brightness文件改为0,此时PWR LED会熄灭;
(2) turn on会报错:运行led.write(‘1’)时会出现OSError: [Errno 34] Numerical result out of range的错误,暂时还不知道怎么解决(扶额
在线求一个解决方法2333

  • 点赞
  • 收藏
  • 分享
  • 文章举报
我是无敌大可爱 发布了8 篇原创文章 · 获赞 5 · 访问量 1637 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: