News Center

Current Location:Home page  <  Product Tutorials
【创客学堂】玩转树莓派之GPIO输入与输出
2013-12-23

    莓派Raspberry Pi)本质上是一台Linux小电脑,但其板载的GPIO接口彰显着它的独特之处。掌握并控制好这些IO接口我们就可以将树莓派变成一块性能极高的单片机。本文通过“按键控制树莓派LED灯”的实验给大家分享一下使用树莓派GPIO进行输入输出的经验。

树莓派V2,连接好VGA与键鼠等外设

图1 接好各种外设的树莓派

一 准备器材

 

    下面通过一个“按键控制树莓派LED灯”的实验给大家分享一下本人使用树莓派GPIO进行输入输出的经验。
     这个实验中我们选用Python语言对树莓派GPIO口进行编程。Python语言是一种面向对象的解释性语言。好在现在有中文版的教材
Raspberry Pi Python 编程入门》所以学习起来还是蛮轻松地。最新版的树莓派上已经预装了Python软件以及驱动GPIO的软件包。我们直接进行编程就行了(如果没有软件包请按《爱上Raspberry Pi》书中所提方法进行安装)。
     树莓派为了减小成本,没有I/O口的外设,所以我们需要一些有I/O外设的扩展板,在这里给大家推荐一款树莓派原型扩展板,它有专门为树莓派设计的接口,它将树莓派所有的GPIO接口全部引出,板上有一颗LED接到树莓派GPIO25脚上,另有一颗按键接到GPIO24。板子的其余部分全部打上通孔可以让玩家焊上自己的电路。

树莓派原型扩展板,用于扩展GPIO方便连接

图2 树莓派原型扩展板


     首先,给大家演示一下用Python指令驱动GPIO。打开树莓派终端输入 sudo python 用管理员身份打开python程序。依次输入以下指令:>>>GPIO.setmode(GPIO.BCM)
>>>GPIO.setup(25,GPIO.OUT) #设置25管脚为输出
>>>GPIO.output(25,GPIO.HIGH) #25脚输出高电平
>>>GPIO.output(25,GPIO.LOW) #25脚输出低电平
    以上的指令可以控制管脚的输出,python程序还可以读取引脚的输入,这将在接下来的例子中体现出来。
    指令固然能控制I/O口,当然我们最希望的还是能生成可执行文件,树莓派做到这一点自然也是毫无问题的。首先我们需要建立一个空文本,在文本中输入以下程序(程序内容如注释所示)。
import RPi.GPIO as GPIO #调入GPIO库
import time #调入时间库
GPIO.setmode(GPIO.BCM)
GPIO.setup(24,GPIO.IN) #将24脚设置为输入
#GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#将24脚设置成有上拉模式,如果用不带上拉电阻的按键可以使用此句。
GPIO.setup(23,GPIO.OUT) #将23脚设置为输出
count=0
while True: #循环执行
    inputValue = GPIO.input(24)#读取键值
    if(inputValue==0): #判断键值
         count=count+1
    if(count%2==0):
         print("THE LED IS ON NOW") #终端输出
    else:
         print("THE LED IS OFF NOW") #终端输出
    time.sleep(0.3) #延时等待
    if(count%2==0): #根据count的值决定LED灯是否开闭
         GPIO.output(23,GPIO.HIGH)
    else:
         GPIO.output(23,GPIO.LOW)
    time.sleep(0.01) #延时等待留给系统空闲时间
  #注意:1、程序段的前的空格数,Python程序用空格字符控制程序层次,而不是C语言的“{}”。2、Python程序中的注释符是“#”而不是“//”.
        然后按下面的电路图搭建电路,这里我用的是树莓派原型扩展板自带的面包板自己搭建的电路。如果不想自己搭建电路也可以使用原型扩展板上的自带的LED灯和按键。只需要根据程序所示用语句“GPIO.setup(channel,GPIO.IN,pull_up_down=GPIO.PUD_UP)”将该输入口设置成上拉模式即可。

树莓派GPIO实验电路原理图

图3 按键与LED电路原理图

树莓派原型扩展板连线实物图

图4 插接好元器件的原型扩展板

二 实践环节

 


     将文本保存命名为KEYLED.py文件。然后进入树莓派终端,输入sudo python keyled.py ,运行我们所写的程序。我们可以看到当按下按键时,LED灯变亮,终端显示THE LED IS ON NOW,当按键再次按下时,LED灯变灭,终端显示THE LED IS OFF NOW。

python运行程序指令

图5 输入程序运行指令

 

终端显示出LED灯的工作状态

图6 LED灯亮灭状态显示

    树莓派的GPIO应用起来虽不如Arduino简单易用,不过稍加练习很快也能运用自如,这样Arduino的很多模块在树莓派GPIO上也同样能够玩转起来。

 相关链接:

树莓派二代:http://www.alsrobot.cn/goods-427.html

树莓派原型扩展板:http://www.alsrobot.cn/goods-491.html

树莓派显示器:http://www.alsrobot.cn/goods-386.html

爱上Raspberry Pi:http://www.alsrobot.cn/goods-410.html

爱上Raspberry Pi套件:http://www.alsrobot.cn/goods-433.html