购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.4 控制GPIO输出

通过前几节的学习,我们已经知道GPIO引脚可以发送一个数字输出信号到外部设备上,本节将介绍如何在Python程序中控制输出信号。

6.4.1 硬件连接

LED是一种常用、廉价和高效的光源,其灯泡长腿为正极,短腿为负极。使用LED的方式需要格外注意,如果将其直接连接到高于1.7V的电源上,会产生一个非常大的电流,导致LED(甚至树莓派)损坏。通常情况下,为LED配备一个串联电阻,使流经LED的电流限制在特定的数值上,从而对LED和为其供电的GPIO引脚提供保护。

树莓派的GPIO引脚只能提供3mA或16mA左右的电流,对于LED来说,只要流经的电流大于1mA就足以发光,电流越大,亮度则越高。

在连接硬件设备前,先切断树莓派的电源。用跳线连接树莓派GPIO的1号与6号引脚,1号引脚输出3.3伏电压连接面包板的正极,串联一个470Ω的色环电阻,再将LED正极插入。LED负极插入面包板负极,6号引脚连接的跳线与其连接形成闭环。如图6.10所示。

完成连接后为树莓派通电开机,LED同时点亮。除了能直接点亮LED,还能通过GPIO控制LED开关,先切断树莓派电源,连接树莓派GPIO的1号引脚的跳线改为连接11号引脚,如图6.11所示,最后为树莓派通电开机,之前点亮的LED此时不会发光,在下一节将会使用Python控制该LED发光。

图6.10 直接连接LED接线

图6.11 GPIO控制LED接线

6.4.2 测试GPIO输出

上一节我们已经完成了硬件连接,如图6.11所示,分别将树莓派的11号引脚(GPIO17)和6号引脚(Gound)连接到面包板上,接下来只需要通过Python的RPi.GPIO模块控制树莓派的11号引脚信号为高电平可以点亮LED,变为低电平时可以熄灭LED。

编写Python代码有两种方式,第一种是直接在树莓派的终端输入python3(前提是已经安装过Python3),然后再输入具体的代码控制LED开关,其优点是可以手动控制引脚信号。具体代码如下:

 
     import RPi.GPIO as GPIO
     GPIO.setmode(GPIO.BOARD)
     GPIO.setup(11, GPIO.OUT)

在上面的代码中,首先引入RPi.GPIO模块,然后设置GPIO的编程方式为BOARD,即使用物理引脚的方式,最后设置11号物理引脚负责输出电压。下一步可以通过output()方法来控制电平的高低以此来点亮或者熄灭LED。在终端输入下面代码点亮一个LED:

 
     GPIO.output(11, GPIO.HIGH)

同理,如果要熄灭该LED,只需要将11号物理引脚输出低电平即可,具体代码如下:

 
     GPIO.output(11, GPIO.LOW)

通过上面两行代码来回切换运行即可以看到LED的开启和关闭,最后在结束前一定要使用cleanup()方法将GPIO端口重置为中性,具体设置如下:

 
     GPIO.cleanup()

通过Ctrl+D快捷键(Ctrl+C快捷键为强制中止)可以退出Python的shell编程模式。另一种编写Python代码的方式是新建一个py文件,在文件中先写好具体的业务代码,然后使用Python运行这个文件。可以在桌面上新建一个blingbling.py文件,然后使用树莓派自带的Python IDE工具Thonny打开该文件,添加如下代码:

【实例6.1】点亮一个LED(实例位置:资源包\Code\06\01)

可以直接在Thonny编辑器中运行这个文件,或者在终端中使用下面命令运行该文件:

 
     sudo python3 blingbling.py

程序运行时,可以看到LED点亮或熄灭,20s后程序自动结束。同样也可以使用模块的PWM功能实现该需求,具体代码如下:

【实例6.2】使用PWM点亮一个LED(实例位置:资源包\Code\06\02)

运行程序后,树莓派在GPIO 11上以1Hz的频率开始发送PWM信号,然后开始一个无限的循环并且不做任何的业务处理,当使用Ctrl+C快捷键中止操作时,程序捕捉到KeyboardInterrupte错误,从而停止PWM,最后释放引脚。

使用PWM功能时,由于start()方法指定了占空比(范围从1~100),在发送PWM信号后,程序就可以释放出来,从而避免资源紧张,GPIO 11持续的发送PWM信号,直到停止。 sKW7e0zYIPPBZ0/rruZlXQF5ldEXwXJLKkfUjc9a92TxyQ/3wLijmFM7kic8dXSF

点击中间区域
呼出菜单
上一章
目录
下一章
×