按键控制流水灯流动方向
时间: 2023-11-20 12:59:14 浏览: 122
以下是Python中使用GPIO控制流水灯流动方向的代码示例:
```python
import RPi.GPIO as GPIO
import time
# 设置GPIO模式为BCM
GPIO.setmode(GPIO.BCM)
# 定义LED引脚
led_pins = [17, 18, 27, 22]
# 设置引脚为输出模式
for pin in led_pins:
GPIO.setup(pin, GPIO.OUT)
# 定义按键引脚
button_pin = 23
# 设置按键引脚为输入模式,上拉电阻
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 定义流水灯流动方向
direction = 1
# 循环流水灯
while True:
# 检测按键状态
if GPIO.input(button_pin) == GPIO.LOW:
# 按键按下,改变流动方向
direction *= -1
time.sleep(0.2)
# 点亮LED
for i in range(len(led_pins)):
if i % 2 == 0:
GPIO.output(led_pins[i], GPIO.HIGH)
else:
GPIO.output(led_pins[i], GPIO.LOW)
# 等待一段时间
time.sleep(0.2)
# 熄灭LED
for i in range(len(led_pins)):
if i % 2 == 0:
GPIO.output(led_pins[i], GPIO.LOW)
else:
GPIO.output(led_pins[i], GPIO.HIGH)
# 等待一段时间
time.sleep(0.2)
# 改变流动方向
if direction == -1:
led_pins.reverse()
# 清理GPIO口
GPIO.cleanup()
```
在这个例子中,我们使用了RPi.GPIO库来控制GPIO口。我们定义了4个LED引脚和1个按键引脚,并将它们分别设置为输出和输入模式。我们使用一个while循环来循环流水灯,并检测按键状态来改变流动方向。在每次循环中,我们点亮偶数引脚的LED,等待一段时间,然后熄灭偶数引脚的LED,再等待一段时间。最后,如果流动方向为反向,我们将LED引脚列表翻转,以改变流动方向。
阅读全文