# 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)
- 简介
- 更新树莓派源
- GPIO Zero基础案例
- 导入GPIO Zero库
- 引脚编码
- 树莓派代码编辑器
- LED
- 电磁继电器
- 呼吸灯
- LED条形图
- led条
- 交通灯
- 按钮
- 按钮控制LED灯
- 用按钮控制摄像头
- 舵机
- 关机按钮
- 按钮拍照
- 反应速度游戏
- 音乐盒子
- 单个按钮控制多个元件
- 全彩灯
- 人体红外传感器
- 亮度传感器
- 距离传感器
- 马达控制
- 机器人
- 按钮控制机器人
- 键盘控制机器人
- 红外感应机器人
- 电位器
- 用数模转换器测量温度
- 通过3个电位器控制全彩灯
- 时控加热灯
- 联网状态指示
- CPU温度条形图
- 更多
- OLED屏幕
- GPIO Zero基础案例2
- 古德微树莓派案例
- ws2812灯带python案例
- ads1115
- 高级秘籍
- 4 配置远程GPIO
- 5 远程GPIO案例
- 5.1 LED和按钮
- 6 树莓派Zero OTG USB数据线
- 7.数据源和值
- 微信发送疫情
- 8. 命令行工具
- 9. 常见问题
- 10. 从RPi.GPIO库迁移到GPIO Zero
- 公众号文章
- Python绘制疫情图表
- 百度人工智能案例
- vscode配置树莓派远程开发环境
- Jupyter Notebook相关
- 树莓派拍摄定格动画
- oled
- 创客与音乐
- 如何入门Python
- 交通标志