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

所需材料

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

电路连接

电路图

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

编写程序

安装RPi.GPIO

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

Shell
1
2

sudo apt-get update
sudo apt-get install python-dev python-rpi.gpio

来安装

编写模块

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

Shell
1
2
3
4

cd
mdir GPIO
cd GPIO
nano led.py

python代码如下:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

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模块:

Python
1
2
3
4
5

import led
led.init()
led.test()
led.clean()

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

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

Shell
1
sudo python

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

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

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() 的一个封装

在树莓派上用python控制LED相关推荐

  1. 在树莓派上进行python编程_在树莓派上用Python控制LED

    所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...

  2. 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)

    Python部落(www.freelycode.com)组织翻译, 禁止转载 关键字 条件关键字 下表列出了和条件语句有关的关键字和它们的简要描述 if用来决定将要执行哪条语句 else 可选,条件为 ...

  3. [RPi]树莓派GPIO入门之控制LED灯

    本文部分资料及图片来自网络 一.所需材料 树莓派4B.LED灯.面包板.杜邦线.电阻.Python程序 二.认识硬件材料 这里介绍下LED灯.面包板.杜邦线.电阻 LED灯:LED灯引脚长的一端为正极 ...

  4. 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...

    计算机已经不再只是用来工作的方盒子.任何拥有一个可编程处理中心的东西都可以称作计算机.游戏终端.智能手机.全球卫星定位系统(GPS)单元.平板电脑以及其他许多令人难以置信的设备都说明了这一点.它们都是 ...

  5. 树莓派上使用python

    树莓派上使用python 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 树莓派上使用python 一.步骤 1.将树莓派内置的 Python2.7 升级成 Python3 ...

  6. python控制树莓派led_Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  7. python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  8. python控制树莓派gpioled,Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  9. 树莓派能直接运行python程序_在树莓派上运行python脚本 - python

    我正在研究rapiberry pi 3大约3个月,开始使用它时遇到了问题. 我找不到在树莓派打开时在其上运行python脚本的有效,安全的方法(没有监视器,鼠标和键盘).此刻,我在/ etc / pr ...

最新文章

  1. sourceTree
  2. Kotlin与Java之争
  3. 社团管理信息系统C语言,学生社团信息管理系统.doc
  4. php的gd库处理大的图片,PHP的gd库处理图片
  5. 面向多媒体 linux 版本,基于MX Linux 的 AV Linux 新版发布,此AV非彼AV
  6. Nginx凭啥子并发数可以达到3w!
  7. jy61 树莓派_用Linux树莓派来读取JY61的串口数据
  8. VXLAN配置实例(一)——VXLAN基本配置
  9. Java8 lambda 的使用
  10. 工具分享:VISIO 2010版windows_64正版软件32位(附下载链接)
  11. awvs 中文手册详细版
  12. 竞品分析报告模板----笔记2
  13. 颈椎前路caspar撑开器_Mobi-C人工颈椎间盘在颈前路手术的临床应用
  14. Django 字段选项之 related_name 和 related_query_name
  15. 云计算如何运用在政府行业--解决方案
  16. 云智慧陆兴海:统一运维体系为数字政府建设保驾护航
  17. 1351:面朝大海 春暖花开 [ 数据加强版 ]
  18. WordPress网站速度优化教程
  19. PyQt5的编写的天气查询小软件
  20. 旅游景区智能导游系统

热门文章

  1. 【Android 进程保活】提升进程优先级 ( 1 像素 Activity 提高进程优先级 | taskAffinity 亲和性说明 | 运行效果 | 源码资源 )
  2. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
  3. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )
  4. 递归锁,死锁,使用递归锁解决死锁,信号量
  5. [Spring cloud 一步步实现广告系统] 18. 查询返回广告创意
  6. 手把手带你使用JS-SDK自定义微信分享效果
  7. 区块链:新经济蓝图及导读
  8. ubuntu 14.04安装mysql server mysql client
  9. 分享懒人张RDLC报表(四)
  10. (摘)TMS320 DSP混合编程的方法研究