# gpiozero 树莓派基金会的Ben Nuttal以及Dave Jones和其他贡献者编写的一个用来处理树莓派GPIO设备的接口。 **树莓派镜像默认安装了GPIO Zero库,无需额外安装**。 ## About 编程了提供一个平滑的入门路径: ![](https://img.kancloud.cn/74/f7/74f7742d5a1db884a2d54bc7b3145ebe_373x350.png) ``` from gpiozero import LED from time import sleep led = LED(17) while True: led.on() sleep(1) led.off() sleep(1) ``` 仅需要寥寥数行代码,就可以快速地让不同元器件之间可以交互,比如用按钮控制LED灯。 ``` from gpiozero import LED, Button from signal import pause led = LED(17) button = Button(3) button.when_pressed = led.on button.when_released = led.off pause() ``` 上面这7行代码,第1、2行分别导出需要的类和函数,第5行声明了```led```对象,第6行声明了```button```对象,然后7、8两行的作用分别是,按钮按下灯亮,按钮释放灯就灭了。 >注意这段代码windows平台是不能跑的,因为没有pause函数,必须在树莓派上,remote gpio的形式也是不可以的。 而且gpiozero提供了一些高级的工具,比如```source tools```,可以让我们用声明式编程的语法来描述不同设备、元器件的行为以及他们之间的交互关系。 ``` from gpiozero import LED, MotionSensor, LightSensor from gpiozero.tools import booleanized, all_values from signal import pause garden = LED(17) motion = MotionSensor(4) light = LightSensor(5) garden.source = all_values(booleanized(light, 0, 0.1), motion) pause() ``` 这段代码的作用是,花园里有一盏灯,当环境光线亮度小于0.1或者有人走动的时候,灯会亮。这个代码真的是很精简了。 >译注:这个```source tools```实现的十分优雅精妙,用到了组合模式应该是,用声明式编程写代码结合python列表推导式的语法糖,控制多态树莓派简直不要太爽了。 阅读本文档```源/值```一章来获取关于```source tools```的详细介绍。 gpiozero库包含了诸多常见元器件的接口,同时也为复杂的元器件提供了支持,比如各种传感器,模数转换器,全彩LED灯,机器人套件以及更多元器件、套件。 阅读```Recipes```一章来获取更加详细的信息。 ## 引脚工厂 GPIO Zero库基于若干底层的树莓派引脚库编写,比如RPi.GPIO和piggpio这两个树莓派引脚库,各有所长。至于整个程序用同一种库,还是不同的元器件用不同的库,你可以按需选择。阅读```改变引脚工厂````一章来了解更多信息。 同时GPIO Zero库,提供了“虚假引脚”,以方便测试,可以阅读```虚假引脚```相关内容了解相关信息。 ## 安装 树莓派官网[raspberrypi.org](https://www.raspberrypi.org/downloads/)的桌面版镜像默认自带了GPIO Zero库。如果需要在树莓派Raspbian Lite版本的系统或者其他操作系统安装远程GPIO库,请阅读[安装](1)章节。 ## 文档 [https://gpiozero.readthedocs.io/](https://gpiozero.readthedocs.io/).网站上有本库完整的文档,如有需要可以参阅。 ## 贡献者 ![](https://img.kancloud.cn/c5/bd/c5bdd26e23c17b09fe1257c15b3cb69f_330x194.png) ![](https://img.kancloud.cn/00/39/00395bb5c76a83026687925813841163_250x719.png) ![](https://img.kancloud.cn/66/1c/661c06ee4a12db52312042825009fe4e_361x821.png) # 大地与星空 大地与星空公众号讲发布文档的详细解析。 ![](https://img.kancloud.cn/4d/e2/4de25e5e60045eb1e3c7048de44dea8c_382x152.png) ![](https://img.kancloud.cn/0d/e5/0de52544d1bab04e2a42d1ecf9b0e258_372x138.png)