在树莓派上用python控制LED
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装
所需材料
- 一个已经安装配置好了的树莓派
- 连接控制树莓派所用的其他必须设备
- 200Ω电阻 x 8
- led x 8
- 面包板及连接线若干
电路连接
电路图
按照电路图所示,在面包板上进行连接。
编写程序
安装RPi.GPIO
首先得确定RPi.GPIO已安装。最新的系统已经自带了,如果没有的可以使用命令
- sudo apt-get update
- sudo apt-get install python-dev python-rpi.gpio
编写模块
用文本编辑器新建一个led.py文件。(高手们都用vi,我只会用nano...)
- cd
- mdir GPIO
- cd GPIO
- nano led.py
python代码如下:
- import RPi.GPIO as GPIO
- import time
- channels = [16,18,22,24,26,19,21,23]
- def init():
- GPIO.setmode(GPIO.BOARD)
- for x in channels:
- GPIO.setup(x,GPIO.OUT)
- pass
- def on(i):
- GPIO.output(channels[i], GPIO.HIGH)
- def off(i):
- GPIO.output(channels[i], GPIO.LOW)
- def ctrl(data):
- for i in channels:
- GPIO.output(i, data & 0x1)
- data = data >> 1
- pass
- def test():
- for i in xrange(512):
- ctrl(i)
- time.sleep(0.1)
- def clean():
- GPIO.cleanup()
你可以在树莓派上直接编辑这个文件,也可以将文件在电脑上编辑好,然后用SFTP或者Linux下的scp命令传到树莓派上。
调用模块
你可以编写一个test.py调用刚刚编写好的led模块:
- import led
- led.init()
- led.test()
- led.clean()
也可以直接在python shell中操作,这里是我在python shell中调用写好的模块的一个例子
要注意的是,GPIO操作需要管理员权限,因此要用sudo。譬如视频中我在启动python shell的时候前边加了sudo:
- sudo python
- sudo python test.py
知识补充:
RPi.GPIO模块函数说明:
RPi.GPIO.setmode(naming_system)
设置将GPIO针的命名方式。naming_system可用的取值有 RPi.GPIO.BCM 和 RPi.GPIO.BOARD,分别代表boardcom命名系统和树莓派板子上的命名系统。而因为使用BCM 的时候(据说)不同的版本BVM针脚定义不一样,所以同一套程序在多个树莓派系统上使用的时候建议用BOARD。
RPi.GPIO.setup(channel, state)
将标号为channel的针设置为state模式。channel取值为1~26,state取值为RPi.GPIO.IN 或者RPi.GPIO.OUT,分别表示输入和输出。例如 RPi.GPIO.setup(1, RPi.GPIO.IN)表示将1号针设置为输入模式;RPi.GPIO.setup(3, RPi.GPIO.OUT)表示将3号针设置为输出模式。具体哪个号是哪根取决于setmode()中设置成什么。
RPi.GPIO.output(channel, state)
将标号为channel的针设置为state指定的电平。channel取值为1~26,state取值为RPi.GPIO.HIGH 和RPi.GPIO.LOW,或者1和0,或者True和False,表示高电平和低电平。例如RPi.GPIO.output(1, 1) 表示把1号针设置为高电平,RPi.GPIO.output(3, Flase) 表示将3号针设置为低电平。具体哪个号是哪根取决于setmode()中设置成什么。
RPi.GPIO.input(channel)
获取将标号为channel的针的电平砖头。channel取值为1~26。例如RPi.GPIO.input(1) 表示获取1号针的状态。
led.py模块说明
channel 中保存的是连接中使用的针的标号,按顺序。
init() 是初始化GPIO接口的代码,使用控制lcd去前要调用。主要工作是设置接口命名模式和 将channel中的针设置为输出模式
on() / off() 是将channel 中第i个针设置为高电平/低电平
ctrl() 是根据参数设置全8根针的电平。参数的低0位、低1位、低2位...分别表示channel下标为0、1、2...的针的电平状况,1为高电平、0为低电平
转载自:在树莓派上用python控制LED
https://blog.csdn.net/cugbabybear/article/details/23125471
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/80302877
- 点赞
- 收藏
- 关注作者
评论(0)