python树莓派 是什么_Python“库”在树莓派中的应用解析

一、何谓Python语言的“库”?

与其它编程语言类似,Python语言中也提供有内置的或用户可自定义编写的“函数”(Function),即能够完成某具体功能的一段程序代码,可在程序中通过参数调用和返回值来使用函数;在Python中,“模块”(Module)则是包含对象定义和可执行代码的Python源文件(扩展名为py),在模块内可以定义变量和函数,它相当于规模更大的“函数”群;比模块更为强大的是“库”(Library),它是Python的特色之一,是具有相关联功能的模块集合,包括标准库和第三方扩展库,可用于文件读写、网络抓取和解析、数据计算和统计分析、图像和视频处理、数据可视化和交互学习等,功能非常强大。

Python的标准库不需要安装,只要通过import命令导入程序中即可调用,比如os模块库提供了与操作系统交互的函数,编写程序时可以在源文件开始部分写入“importos”语句进行整体导入。Python标准库的具体内容可到其官网进行查看,比如3版本系列的官网标准库对应的地址是https://docs.python.org/3/library/index.html。另外,常见的使用方法还有部分导入,比如用于访问互联网及处理网络通信协议的urllib.request,可使用语句“from urllib.requestimport urlopen”来进行urllib.request中urlopen(类)的导入。Python的第三方扩展库必须要先进行安装及配置才能使用,比如NumPy库为Python提供了很多高级的数学方法,SciPy库则是Python的算法和数学工具库,而BeautifulSoup库提供了对xml和html的解析(一般用于编写爬虫程序)等等。第三方扩展库的导入方法同标准库完全一样,比如“from bs4 import BeautifulSoup”。无论是Python标准库还是第三方扩展库,我们用户都不必关心其内部编程结构及算法是如何实现的,只需按照其语法规则(包括变量名)来调用并完成相关功能即可。

值得一提的是,在Python的命令行模式中可以通过“dir”命令简单地查看库模块信息,以“os”为例:首先打开CMD窗口输入“pyhton”回车,在“>>>”Python命令提示符后输入“dir(‘os’)”,回车后就会显示os的属性;如果想更详细地查看其属性,输入“help(‘os’)”命令来进行查看——按空格键可向下翻页(如图1所示)。

0ffeeeac37220ce3f2f2ea5565b4f029.png

图1

二、Python第三方扩展库的杰出代表:GPIOZERO库

在树莓派中使用Python语言进行编程开发的过程中,自然少不了对GPIO(General Purpose Input/Output)通用型输入输出引脚的控制。最初,大家都是引用RPi.GPIO库来进行编程——RPi.GPIO库允许用户使用代码来控制树莓派的GPIO引脚,功能非常强大,以至于在很多Python程序的开头部分都能看到“import RPi.GPIO as GPIO”(以GPIO为名导入RPi.GPIO库)引用语句。

以GPIOZERO库为例,它是构建于RPi.GPIO库之上的“前端语言包装器”,面向Python的最初级用户,代码十分精简且更通俗易懂。与RPi.GPIO库相比,GPIOZERO库并不要求用户使用语句进行引脚模式的设置(默认即为BCM编码模式),对各引脚的控制模块均遵循“易读、尽可能短”的引用原则,比如以下三行代码即可实现点亮一只LED灯的功能:

from gpiozeroimport LED

led = LED(27)

led.on()

第一行代码的作用是导入GPIOZERO库的LED类模块,第二行代码是将BCM编码为27(物理引脚BOARD编码为13)的引脚赋值给变量led,第三行代码是设置该引脚为“打开”状态(高电平)。

GPIOZERO库的安装比较简单,首先在Windows的远程桌面连接中登录树莓派,接着点击运行“LX终端”并且在“pi@raspberrypi:~$”命令提示符后输入“sudo apt update”命令,其作用是更新存储列表,完成后会提示“所有软件包均为最新”;接着,再输入命令“sudo apt install python-gpiozero”进行GPIOZERO库的安装,完成后会提示“python-gpiozero已经是最新版”(如图2所示)。

023ae40be733b470d71ba7a3913c7bcb.png

图2

如果不习惯使用命令行操作的话,我们还可以在本地已经安装好的Python编辑器(比如PyCharm)中进行安装,具体步骤为:首先打开PyCharm,点击执行“File”-“Settings”菜单命令,在弹出的Settings设置窗口的左侧点击“Project:1_1code_of_video”-“Project Interpreter”项;接着点击右侧上方的小加号图标,在弹出“AvailablePackages”(获取包)窗口搜索框内输入待安装的第三方扩展库名称“GPIOZERO”,PyCharm就会显示出该项的多个下载源,点击选中后再点击左下角的“InstallPackage”(安装包)按钮,安装结束后就会有“Package ‘gpiozero’ installedsuccessfully”的成功提示(如图3所示)。

a4fca1f2669e42fcda4c1880392e19dd.png

图3

三、应用GPIOZERO库简单快速实现三种LED灯光效果

准备一只LED灯和两根母对母杜邦线,将红色杜邦线一端连接LED灯长脚(正极),另一端连接树莓派11号物理引脚——BCM编码为17;白色杜邦线一端连接LED灯短脚(负极),另一端连接树莓派39号物理引脚(GND接地端)。闪烁灯和呼吸灯的硬件连接准备工作便完成,按钮灯需要再使用一只按钮和两根母对母杜邦线,将其VCC(电源端)、OUT(输出端)分别接至树莓派3号(BCM编码为2)和6号物理引脚。在本地的Windows环境中使用PyCharm新建三个Python文件,分别命名为Sparkle_LED.py、Breath_LED.py和Button_LED.py,对应于闪烁灯、呼吸灯和按钮灯程序(内容如下),保存后通过远程桌面程序复制粘贴到树莓派系统的home/pi文件夹中。

1.实现闪烁灯效果的Python程序:Sparkle_LED.py

双击home/pi/Sparkle_LED.py文件,调用Thonny Python IDE打开,其有效执行代码共8行(加2行库导入语句),如下:

from gpiozeroimport LED

from time importsleep

red = LED(17)

while True:

    red.on()

    sleep(0.2)

    red.off()

    sleep(0.2)

解析:第一行“fromgpiozero import LED”是从GPIOZERO库中导入类LED,第二行“from time import sleep”是从TIME库中导入类sleep;第三行“red= LED(17)”是将BCM编码为17的LED灯的引脚赋值给变量red;接下来就是一个循环,条件永远为真(True),“red.on()”是控制LED灯发光,而“red.off()”则是控制其熄灭,后面各接一条“sleep(0.2)”语句的作用是等待0.2秒。

点击“Run”运行按钮执行该程序,红色LED灯就开始闪烁起来:亮0.2秒、灭0.2秒,再亮0.2秒、灭0.2秒……(如图4所示)。

f4a9c830af06021f8e02830d98c4e510.png

图4

2.实现呼吸灯效果的Python程序:Breath_LED.py

打开home/pi/Breath_LED.py文件,有效执行代码共5行(加2行库导入语句),如下:

from gpiozeroimport PWMLED

from signal importpause

led = PWMLED(17)

led.pulse()

pause()

解析:与闪烁灯程序类似,第一行“from gpiozero import PWMLED”是从GPIOZERO库中导入类PWMLED,第二行“from signal import pause”是从signal库中导入类pause;第三行“led = PWMLED(17)”将PWM(脉冲宽度调制)赋值给变量led,结合第四行“led.pulse()”就相当于连续地进行淡入和淡出值的设置,最后一行“pause()”的作用是暂停。

点击“Run”运行按钮执行该程序,红色LED灯的亮度就会非常均匀地开始逐渐从暗变亮、再从亮变暗,然后一直这样“呼吸”起来……(如图5所示)。

79fd43173b2bafba6bb0b9db58f0fab3.png

图5

3.实现按钮灯效果的Python程序:Button_LED.py

打开home/pi/Button_LED.py文件,有效执行代码共7行(加2行库导入语句),如下:

from gpiozeroimport Button,LED

from signal importpause

led = LED(17)

button = Button(2)

button.when_pressed= led.on

button.when_released= led.off

pause()

解析:与上面两种灯光效果的程序类似,不同之处在于:一个是在第四行“button = Button(2)”,作用是将连接在BCM编码为2引脚的按钮赋值给变量button来控制;第二个是第五行“button.when_pressed = led.on”,作用是当检测到按钮被按下(Press)时控制LED灯发光(led.on);第三个是第六行“button.when_released = led.off”,作用是当检测到按钮被松开(Release)时控制LED灯熄灭(led.off)。

点击“Run”运行按钮执行该程序,LED灯先是处于熄灭状态;当按下按钮时,LED灯发光;当松开按钮时,LED灯熄灭(如图6所示)。

f3b7e384ca1c48577ee3f464f18f5911.png

图6

山东 牟晓东 牟奕炫

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值