在树莓派上用python控制LED
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装
所需材料
- 一个已经安装配置好了的树莓派
- 连接控制树莓派所用的其他必须设备
- 200Ω电阻 x 8
- led x 8
- 面包板及连接线若干
电路连接
电路图
按照电路图所示,在面包板上进行连接。
编写程序
安装RPi.GPIO
首先得确定RPi.GPIO已安装。最新的系统已经自带了,如果没有的可以使用命令:
1
2
|
sudo apt-get update
sudo apt-get install python-dev python-rpi.gpio
|
来安装
编写模块
用文本编辑器新建一个led.py文件。(高手们都用vi,我只会用nano…)
1
2
3
4
|
cd
mdir GPIO
cd GPIO
nano led.py
|
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模块:
1
2
3
4
5
|
import led
led.init()
led.test()
led.clean()
|
也可以直接在python shell中操作,这里是我在python shell中调用写好的模块的一个例子
要注意的是,GPIO操作需要管理员权限,因此要用sudo。譬如视频中我在启动python shell的时候前边加了sudo:
1
|
sudo python
|
而在运行自己写的test.py的时候也要加sudo:
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相关推荐
- 在树莓派上进行python编程_在树莓派上用Python控制LED
所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...
- 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)
Python部落(www.freelycode.com)组织翻译, 禁止转载 关键字 条件关键字 下表列出了和条件语句有关的关键字和它们的简要描述 if用来决定将要执行哪条语句 else 可选,条件为 ...
- [RPi]树莓派GPIO入门之控制LED灯
本文部分资料及图片来自网络 一.所需材料 树莓派4B.LED灯.面包板.杜邦线.电阻.Python程序 二.认识硬件材料 这里介绍下LED灯.面包板.杜邦线.电阻 LED灯:LED灯引脚长的一端为正极 ...
- 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...
计算机已经不再只是用来工作的方盒子.任何拥有一个可编程处理中心的东西都可以称作计算机.游戏终端.智能手机.全球卫星定位系统(GPS)单元.平板电脑以及其他许多令人难以置信的设备都说明了这一点.它们都是 ...
- 树莓派上使用python
树莓派上使用python 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 树莓派上使用python 一.步骤 1.将树莓派内置的 Python2.7 升级成 Python3 ...
- python控制树莓派led_Python 控制树莓派 GPIO 输出:控制 LED 灯
树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...
- python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯
树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...
- python控制树莓派gpioled,Python 控制树莓派 GPIO 输出:控制 LED 灯
树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...
- 树莓派能直接运行python程序_在树莓派上运行python脚本 - python
我正在研究rapiberry pi 3大约3个月,开始使用它时遇到了问题. 我找不到在树莓派打开时在其上运行python脚本的有效,安全的方法(没有监视器,鼠标和键盘).此刻,我在/ etc / pr ...
最新文章
- sourceTree
- Kotlin与Java之争
- 社团管理信息系统C语言,学生社团信息管理系统.doc
- php的gd库处理大的图片,PHP的gd库处理图片
- 面向多媒体 linux 版本,基于MX Linux 的 AV Linux 新版发布,此AV非彼AV
- Nginx凭啥子并发数可以达到3w!
- jy61 树莓派_用Linux树莓派来读取JY61的串口数据
- VXLAN配置实例(一)——VXLAN基本配置
- Java8 lambda 的使用
- 工具分享:VISIO 2010版windows_64正版软件32位(附下载链接)
- awvs 中文手册详细版
- 竞品分析报告模板----笔记2
- 颈椎前路caspar撑开器_Mobi-C人工颈椎间盘在颈前路手术的临床应用
- Django 字段选项之 related_name 和 related_query_name
- 云计算如何运用在政府行业--解决方案
- 云智慧陆兴海:统一运维体系为数字政府建设保驾护航
- 1351:面朝大海 春暖花开 [ 数据加强版 ]
- WordPress网站速度优化教程
- PyQt5的编写的天气查询小软件
- 旅游景区智能导游系统
热门文章
- 【Android 进程保活】提升进程优先级 ( 1 像素 Activity 提高进程优先级 | taskAffinity 亲和性说明 | 运行效果 | 源码资源 )
- 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
- 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )
- 递归锁,死锁,使用递归锁解决死锁,信号量
- [Spring cloud 一步步实现广告系统] 18. 查询返回广告创意
- 手把手带你使用JS-SDK自定义微信分享效果
- 区块链:新经济蓝图及导读
- ubuntu 14.04安装mysql server mysql client
- 分享懒人张RDLC报表(四)
- (摘)TMS320 DSP混合编程的方法研究