在树莓派上用python控制LED

原文出处: CuGBabyBeaR

初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装

所需材料

  • 一个已经安装配置好了的树莓派
  • 连接控制树莓派所用的其他必须设备
  • 200Ω电阻 x 8
  • led x 8
  • 面包板及连接线若干

 

电路连接

电路图

20140407203149343

按照电路图所示,在面包板上进行连接。

20140407203704109

编写程序

安装RPi.GPIO

首先得确定RPi.GPIO已安装。最新的系统已经自带了,如果没有的可以使用命令:

来安装

编写模块

用文本编辑器新建一个led.py文件。(高手们都用vi,我只会用nano…)

python代码如下:

你可以在树莓派上直接编辑这个文件,也可以将文件在电脑上编辑好,然后用SFTP或者Linux下的scp命令传到树莓派上。

 

调用模块

你可以编写一个test.py调用刚刚编写好的led模块:

也可以直接在python shell中操作,这里是我在python shell中调用写好的模块的一个例子

要注意的是,GPIO操作需要管理员权限,因此要用sudo。譬如视频中我在启动python shell的时候前边加了sudo:

而在运行自己写的test.py的时候也要加sudo:

 

知识补充:

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号针的状态。

RPi.GPIO.cleanup()

清除掉之前RPi.GPIO.setup()设置的状态。退出程序之前一定要调用,否则下次调用的时候会报错。

led.py模块说明

channel 中保存的是连接中使用的针的标号,按顺序。

init() 是初始化GPIO接口的代码,使用控制lcd去前要调用。主要工作是设置接口命名模式和 将channel中的针设置为输出模式

on() / off() 是将channel 中第i个针设置为高电平/低电平

ctrl() 是根据参数设置全8根针的电平。参数的低0位、低1位、低2位…分别表示channel下标为0、1、2…的针的电平状况,1为高电平、0为低电平

test() 是测试函数。用8位二进制表示8个灯的状态,每隔0.1秒到下一个状态: 0000 0000, 0000 0001, 0000 0010, 0000 0011,0000 0100 … 实际上就是从0数到255

clean() 是对 RPi.GPIO.cleanup() 的一个封装



手机、软件、移动互联网。新浪微博:@尘岳0_o

5 评论

  1. Boyd Wang  /  2014 年 4 月 29 日, 下午 11:51 回复

    sudo apt-get install python-dev python-rpi.gpio 提示找不到python-rpi.gpio包,是不是我的源不对。

    Thumb up 0 Thumb down 0

    • 尘岳  /  2014 年 5 月 4 日, 上午 11:20 回复

      这个建议去原博客询问,有结果了麻烦提醒我更新,谢谢。

      Thumb up 0 Thumb down 0

      • Boyd Wang  /  2014 年 5 月 4 日, 下午 1:39 回复

        我自己解决了,去https://pypi.python.org/pypi/RPi.GPIO 官网自己下源代码使用sudo python setup.py install 命令安装就好了

        Thumb up 0 Thumb down 0

  2. Boyd Wang  /  2014 年 5 月 3 日, 下午 10:21 回复

    还有代码完全没有缩进,这对python来说是致命的。。。

    Thumb up 0 Thumb down 0

    • 尘岳  /  2014 年 5 月 4 日, 上午 11:19 回复

      已更新,谢谢提醒。

      Thumb up 0 Thumb down 0

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">