树莓派论坛

 找回密码
 立即注册
搜索
查看: 5689|回复: 0

树莓派GPIO入门01-使用GPIO接口控制发光二极管闪烁

[复制链接]

78

主题

144

帖子

5920

积分

超级版主

Rank: 8Rank: 8

积分
5920
发表于 2016-5-10 21:49:17 | 显示全部楼层 |阅读模式
本帖最后由 000 于 2016-5-10 22:02 编辑

对象读者
我假设你的树莓派已经连上你家里的路由(有线无线都行)。并且你已经可以在另外一台设备(台式机,笔记本,手机,平板电脑都可以) 上通过SSH软件登陆到你的树莓派了。当然你也可以直接在树莓派上通过HDMI连接显示器,通过USB键盘鼠标直接进行操作。不管怎样,你可以启动树莓派并进入树莓派的linux命令行界面。
最终效果
ani.gif
控制你的LED发光管按一定时间间隔闪烁

硬件
  • 树莓派一台。1代B,B+或者2015年刚出的2代都可以。我自己用的是2代,GPIO的管脚编号可能会稍微有些差异,相应的需要注意或修改的地方我会在文中说明。另外,后续教程的硬件部分不再特意提到树莓派了。
  • LED发光管(可以理解成小灯泡)一只,什么颜色都可以,一般卖电子零件的商店肯定有卖。或者去淘宝买。几块钱就可以买到一把。
  • 母头杜邦线两条,就是电线,带插头的是公头,带插座的是母头。我们这个实验用两端都是母头的杜邦线。

raspi-study.jpg
硬件图

原理说明
LED灯有一长一短两根针脚,如果将较长的一根连上电源正极,较短的一根脸上电源负极造成电位差就可以点亮LED灯。
但如果两个针脚同时都是负极(低电平)或者都是正极(高电平)则不会产生电位差也就不会被点亮。
将较短的一根连上树莓派的GND(也就是负极)端,较长的一根不要直接连上树莓派的5V或者3.3V(两者都可理解为正极或高电平,以后统称高低电平,不再另行解释),而是连接到一个GPIO针脚上。
然后我们可以通过程序控制GPIO口的电位高低状态即可控制LED的亮(GPIO口设置为高电平)或灭(GPIO口设置为低电平)。
树莓派GPIO针脚说明(适合1代Mode B+或者2代Mode B)
先看一下实物图:
PI.jpg
实物图

右上角有左右两排共40根针脚,并不是所有的针脚都是GPIO针脚。详情参考下图:
GPIO.jpg
树莓派GPIO针脚说明

注意:这两张图的上下左右顺序已经对齐了,实际连线的时候不要看错方向接错针脚。否则有损坏树莓派的可能。
硬件连接
connect.png
原理图

选择开发语言
控制GPIO口有很多方式,比如
  • shell直接控制
  • raspberry-gpio-python库(Python语言)
  • wiringPi库(C语言)
  • BCM2835 C Library(C语言)
  • 我们采用易于开发的python脚本语言作为开发语言。

安装Python以及GPIO库
先安装python-dev,输入以下指令。
  1. sudo apt-get install python-dev
复制代码

安装RPi.GPIO,依次输入以下指令。特别说明,由于RPi.GPIO仍处于不断完善的过程中,推荐去官网下载最新代码。
  1. # 下载
  2. $ wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.6.2.tar.gz
  3. # 有朋友反映上面这句执行不成功提示连接超时,原因是国内google被墙了
  4. 或者用下面的方式下载
  5. $ wget http://freefr.dl.sourceforge.net/project/raspberry-gpio-python/RPi.GPIO-0.6.2.tar.gz
  6. # 这里我提供我已经下载好的文件,下载链接在文章最后
  7. # 解压缩
  8. $ tar xvzf RPi.GPIO-0.5.3a.tar.gz
  9. # 进入解压之后的目录
  10. $ cd RPi.GPIO-0.5.3a
  11. # 启动安装
  12. $ sudo python setup.py install
复制代码

写代码
代码里有详细的注释,代码很简单。
  1. #!/usr/bin/env python
  2. # encoding: utf-8

  3. import RPi.GPIO
  4. import time

  5. # 指定GPIO口的选定模式为GPIO引脚编号模式(而非主板编号模式)
  6. RPi.GPIO.setmode(RPi.GPIO.BCM)

  7. # 指定GPIO14(就是LED长针连接的GPIO针脚)的模式为输出模式
  8. # 如果上面GPIO口的选定模式指定为主板模式的话,这里就应该指定8号而不是14号。
  9. RPi.GPIO.setup(14, RPi.GPIO.OUT)

  10. # 循环10次
  11. for i in range(0, 10):
  12.         # 让GPIO14输出高电平(LED灯亮)
  13.         RPi.GPIO.output(14, True)
  14.         # 持续一段时间
  15.         time.sleep(0.5)
  16.         # 让GPIO14输出低电平(LED灯灭)
  17.         RPi.GPIO.output(14, False)
  18.         # 持续一段时间
  19.         time.sleep(0.5)

  20. # 最后清理GPIO口(不做也可以,建议每次程序结束时清理一下,好习惯)
  21. RPi.GPIO.cleanup()
复制代码

源代码下载
RPi.GPIO-0.5.11.tar.gz (26.43 KB, 下载次数: 2)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部快速回复上一主题下一主题返回列表找客服关注微信

QQ|Archiver|手机版|小黑屋|树莓派论坛 ( 豫ICP备13020861号-6

GMT+8, 2021-6-24 14:59 , Processed in 0.060425 second(s), 26 queries .

Powered by Discuz! X3.2 Designed by BBs.ShuMeiPaiBa.Com

© 2015- Comsenz Inc. www.shumeipaiba.com

快速回复 返回顶部 返回列表