三八资料网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

三八资料网 门户首页 电脑维修 查看内容

Python“库”在树莓派中的应用解析

2020-6-15 10:07| 发布者: 南召修电视| 查看: 32| 评论: 0

摘要: 一、何谓Python语言的“库”?与其它编程语言类似,Python语言中也提供有内置的或用户可自定义编写的“函数”(Function),即能够完成某具体功能的一段程序代码,可在程序中通过参数调用和返回值来使用函数;在Pyth ...
一、何谓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所示)。

图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所示)。

图2

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

图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所示)。

图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所示)。

图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所示)。

图6


路过

雷人

握手

鲜花

鸡蛋

最新评论

论坛最新帖
  • 技改
  • 换灯后技改
  • 2019最新!乐视S50AIR超级电视全系列刷机去
  • 电磁炉IGBT管击穿爆管的原因一定要找到
  • 美的CK2105电磁炉功率管,18V稳压管己坏插
  • 美的MB-FS50J型智能电饭煲工作原理与故障检
  • 福库电饭煲电磁阀更换全过程(全彩图)
  • 一个格力2P的柜机开机不制冷
  • 氧气传感器 O2S-FR-T4-5P-387提高了蒸烤箱
  • 一种绕制微型变压器的方法
门户最新文章
  • 三相电源断零线,为什么会接二连三烧坏电器
  • 又是推架子,工人被活活电死,直到化成灰烬,
  • 故障修的快是我的本事,凭什么不给钱?
  • 配电房是如何送电的?送电方式是什么?看完
  • 电工接的电缆头,能找到5个错误以上的,都
  • 防雷接地地焊怎么做?单面焊还是双面焊
  • 电线都燃了为什么空开不跳闸?80%的电工不
  • 配电箱14大禁忌,千万要注意!
  • 惨烈!配电室爆炸,3人瞬间变成渣!
  • 你知道避雷器和浪涌保护器的区别吗?

QQ|门户地图|手机版|小黑屋|家电维修论坛 ( 蜀ICP备14030498号 )

GMT+8, 2024-6-17 14:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部