APP下载

Python编程点亮树莓派LED灯

2020-08-02

电脑报 2020年27期
关键词:外设树莓杜邦

“树莓派”是一块仅为信用卡般大小的微型电脑,可用于嵌入式开发和计算机开源硬件编程,目前在中小学创客教育活动领域有着极为广泛的应用;Python语法精简,而且能够调用功能强大的各种“库”模块,比如树莓派通过RPi.GPIO库可以非常方便地控制各种外设(LED灯等)。

1.实验目的

认识和连接树莓派,通过Python编程控制LED灯发光和熄灭。

2.实验器材及连接

树莓派(带电源线)主板一块,红色LED灯一支,两根母对母杜邦线,一台联网电脑。

树莓派的两排引脚可以连接多种外设,共40针,其物理引脚的BOARD编码是从1到40。排列规律是:按字母正向标注平放树莓派后,下面一列为奇数序号,从左至右分别是1、3、5……37、39;上面一列为偶数序号,从左至右分别是2、4、6……38、40。

通过Windows的“远程桌面连接”登录树莓派后,在LX终端命令行窗口(“pi@raspberrypi:~$”提示符)中输入“gpio readall”命令,可显示出所有的引脚编号及功能对应关系(如图1)。Python语言编程库使用的是BCM编码(依据是BCM2835芯片的GPIO寄存器编号)。按照功能来分类,除了8个GND(接地)端、3.3V和5V的电源正极各两个之外,最主要的就是17个可编程的GPIO(General Purpose Input/Output:“通用型输入输出接口”),其BCM编码分别是0-7、21-29两组(注意:物理引脚位置并不是连续分布的),可以用来驱动LED灯、传感器、舵机等各种外设。

使用树莓派GPIO引脚与外设连接时必须要仔细,在确定好BCM编码号后再与物理引脚一一对应。比如:我们要将LED灯的长引脚(正极)接至树莓派BCM编码为5的引脚,对应的物理引脚BOARD编码就是29号;短引脚(负极)任意选择一个GND接地引脚即可(比如25号),通过杜邦线连接好(如图2)。

3.实验步骤

(1)在LX终端命令行模式中控制LED灯

连接好实验设备后给树莓派通电开机,然后通过“远程桌面连接”进入树莓派系统(输入IP地址),点击LX终端进入命令行模式。

首先输入“python”后回车,进入Python界面(命令提示符变为“>>>”);接着,输入“import RPi.GPIO as GPIO”命令,作用是以GPIO为名导入RPi.GPIO库,无“回显”错误提示,说明Python已经成功加载了RPi.GHIO库(出错的话要进行更新或安装);然后输入“GPIO.setmode(GPIO.BCM)”命令,作用是设置树莓派的引脚控制方式为BCM编码模式——红色LED灯的正极已经连接至BCM编码5号,Python编程控制时通过数字“5”就能够进行控制(而并非物理引脚BOARD编码“29”);接着,输入命令“GPIO.setup(5,GPIO.OUT)”,设置5号GPIO为输出端(GPIO.OUT);再输入“GPIO.output(5,GPIO.HIGH)”命令,设置5号GPIO输出高电平(GPIO.HIGH)。

回车执行命令后,树莓派的LED灯就会被“点亮”(如图3)。

如何熄灭LED灯呢?非常简单,只须将5号GPIO的输出由高电平再修改为低电平即可,对应的命令是“GPIO.output(5,GPIO.LOW)”,回车执行后,LED灯熄灭。

(2)在Python IDE模式中控制LED灯

在LX终端命令行模式中控制LED燈的方式需要命令的逐条输入和执行,不适合较为复杂的程序,此时可通过“编程”-“Thonny Python IDE”进入Python的IDE编辑窗口来进行程序的编写和调试运行。命令如下:

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(5,GPIO.OUT)

GPIO.output(5,GPIO.HIGH)

time.sleep(3)

GPIO.output(5,GPIO.LOW)

GPIO.cleanup()

其中的“import time”命令的作用是导入时间库,因为程序中使用了sleep语句来控制LED灯持续发光3秒钟;GPIO.cleanup()语句的作用是释放程序所引用的GPIO引脚,并且清除所设置的BCM编码引脚编号规则。将程序保存为LED.py,点击Run按钮调试运行,LED灯发光3秒后熄灭。如果将该程序放置于循环结构中(比如循环10次),并且在GPIO.output(5,GPIO.LOW)后也添加一条time.sleep(1)命令,LED灯就会闪烁起来:亮3秒再熄灭1秒、再亮3秒熄灭1秒……

试想一下:如果使用六根杜邦线分别将红黄绿三支不同颜色的LED灯连接至树莓派的话,是不是可以在IDE中编写循环结构来实现十字路口红绿灯效果呢?

猜你喜欢

外设树莓杜邦
基于杜邦分析的某快递盈利能力提升研究
安静
黄金水果红树莓
树莓红了 游人醉了
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)
外设天地行情
外设天地行情
外设天地行情
外设天地行情