找回密码
 立即注册

QQ登录

树莓派GPIO入门第六课 按键控制 LED

来源: 奥松-Neil 2016-3-13 21:10 显示全部楼层 |阅读模式
本帖最后由 奥松-Neil 于 2018-11-21 13:57 编辑

之前的教程中,我们一直都是使用树莓派控制器的 GPIO 引脚作为输出使用,这里我们用树莓派控制器读取外部数字信号,实验使用三个按键,分别控制三种颜色的 LED。
一. 实验硬件
1. LED 发光二极管(红/黄/绿) * 各一个
2. 轻触开关 * 3 个
3. 杜邦线 * 若干
二. 实验接线
(1)GPIO 14 连接 LED 黄色负极
(2)GPIO 15 连接 LED 红色负极
(3)GPIO 18 连接 LED 绿色负极
(4)GPIO 23 连接 buttonY
(5)GPIO 24 连接 buttonR
(6)GPIO 25 连接 buttonG
(7)LED 负极连接到树莓派 VCC

(8)轻触开关的另一个引脚连接到树莓派的 GND
QQ图片20160313130315.png

三. 实验代码
  1. #!/usr/bin/env python
  2. # encoding: utf-8

  3. import RPi.GPIO
  4. import time

  5. Y,R,G=14,15,18

  6. # 按钮输出针脚连接的GPIO口
  7. btnY, btnR, btnG=23,24,25

  8. RPi.GPIO.setmode(RPi.GPIO.BCM)

  9. RPi.GPIO.setup(R, RPi.GPIO.OUT)
  10. RPi.GPIO.setup(G, RPi.GPIO.OUT)
  11. RPi.GPIO.setup(Y, RPi.GPIO.OUT)

  12. # 按钮连接的GPIO针脚的模式设置为信号输入模式,同时默认拉高GPIO口电平,
  13. # 当GND没有被接通时,GPIO口处于高电平状态,取的的值为1
  14. # 注意到这是一个可选项,如果不在程序里面设置,通常的做法是通过一个上拉电阻连接到VCC上使之默认保持高电平
  15. RPi.GPIO.setup(btnR, RPi.GPIO.IN, pull_up_down=RPi.GPIO.PUD_UP)
  16. RPi.GPIO.setup(btnG, RPi.GPIO.IN, pull_up_down=RPi.GPIO.PUD_UP)
  17. RPi.GPIO.setup(btnY, RPi.GPIO.IN, pull_up_down=RPi.GPIO.PUD_UP)

  18. try:

  19.         t = 0.4
  20.         RPi.GPIO.output(R, True)
  21.         RPi.GPIO.output(G, True)
  22.         RPi.GPIO.output(Y, True)
  23.         while True:
  24.                 time.sleep(0.01)
  25.                
  26.                 # 检测红色按钮是否被按下,如果被按下(低电平),则亮红灯(输出低电平),否则关红灯
  27.                 if (RPi.GPIO.input(btnR) == 0):
  28.                         RPi.GPIO.output(R, False)
  29.                 else:
  30.                         RPi.GPIO.output(R, True)
  31.                
  32.                 # 检测绿色按钮是否被按下,如果被按下(低电平),则亮红绿灯(输出低电平),否则关绿灯
  33.                 if (RPi.GPIO.input(btnG) == 0):
  34.                         RPi.GPIO.output(G, False)
  35.                 else:
  36.                         RPi.GPIO.output(G, True)
  37.                
  38.                 # 检测蓝色按钮是否被按下,如果被按下(低电平),则亮蓝灯(输出低电平),否则关蓝灯
  39.                 if (RPi.GPIO.input(btnY) == 0):
  40.                         RPi.GPIO.output(Y, False)
  41.                 else:
  42.                         RPi.GPIO.output(Y, True)

  43. except KeyboardInterrupt:
  44.         pass

  45. RPi.GPIO.cleanup()
复制代码
四. 实验效果

将代码输入到树莓派的 python 编译器并保存,或者直接在附件中下载程序文件,放到树莓派中,使用下列语句执行程序:
  1. sudo python 6.py
复制代码
代码正确执行的情况下,分别按下三个按键,可以看到 3 个 LED,在按下相应按键时,会点亮。同时按下其中两个按键时,会有两个颜色的 LED 亮起。

五. 附件
6.py (1.66 KB, 下载次数: 30)
回复

使用道具 举报

大神点评86

flywork 2016-3-29 13:29 显示全部楼层
谢谢分享
回复

使用道具 举报

回复查看
回复

使用道具 举报

longon 2016-4-7 21:41 显示全部楼层

谢谢分享
回复

使用道具 举报

丑小鸭 2016-4-8 16:21 显示全部楼层
谢谢分享!
回复

使用道具 举报

llinzzi 2016-4-12 19:18 显示全部楼层
看教程看教程看教程看教程看教程看教程看教程看教程看教程看教程看教程
回复 支持 反对

使用道具 举报

wikeyi 2016-4-14 23:29 显示全部楼层
案件孔子~
回复 支持 反对

使用道具 举报

flac 2016-4-15 17:39 显示全部楼层
也是Python?
回复 支持 反对

使用道具 举报


是的, 也是使用Python语言进行控制的
回复 支持 反对

使用道具 举报

Sweety 2016-4-20 17:34 显示全部楼层
感谢分享,很好的学习资料
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

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

关注0

粉丝8

帖子147

发布主题
社区热门 MORE+
    社区热帖 MORE+