## 交通灯
![](https://img.kancloud.cn/dd/25/dd250dbe045a360551c15d36e9656df5_491x388.png)
全彩交通灯系统。
像使用Pi-Stop一样使用`TrafficLights`套件。
>译注:Pi-Stop是下面这个硬件:
![](https://img.kancloud.cn/e4/94/e494d77d4b8466d05fe3d5d994629f4e_587x275.png)
![](https://img.kancloud.cn/5d/9d/5d9dd3742ab54a478c9ce97fc4a3ba02_494x438.png)
~~~
from gpiozero import TrafficLights
from time import sleep
lights = TrafficLights(2, 3, 4)
lights.green.on()
while True:
sleep(10)
lights.green.off()
lights.amber.on()
sleep(1)
lights.amber.off()
lights.red.on()
sleep(10)
lights.amber.on()
sleep(1)
lights.green.on()
lights.amber.off()
lights.red.off()
~~~
等效写法:
~~~
from gpiozero import TrafficLights
from time import sleep
from signal import pause
lights = TrafficLights(2, 3, 4)
def traffic_light_sequence():
while True:
yield (0, 0, 1) # green
sleep(10)
yield (0, 1, 0) # amber
sleep(1)
yield (1, 0, 0) # red
sleep(10)
yield (1, 1, 0) # red+amber
sleep(1)
lights.source = traffic_light_sequence()
pause()
~~~
>译注:等效写法使用了`yield`生成器功能,可以忽略,这个功能比较抽象,有点难以理解。
如果不用`TrafficLights`套件,而是用`LED`类,代码如下:
~~~
from gpiozero import LED
from time import sleep
red = LED(2)
amber = LED(3)
green = LED(4)
green.on()
amber.off()
red.off()
while True:
sleep(10)
green.off()
amber.on()
sleep(1)
amber.off()
red.on()
sleep(10)
amber.on()
sleep(1)
green.on()
amber.off()
red.off()
~~~
- 简介
- 更新树莓派源
- 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
- 交通标志