编程实现来回循环的流水灯效果
时间: 2024-09-29 07:00:24 浏览: 16
编程实现来回循环的流水灯效果通常是在控制硬件LED灯阵列的软件中应用的一种动画效果。这种效果通过轮流点亮和熄灭LED灯,给人一种水流般流动的感觉。以下是使用Python和GPIO模块(对于树莓派)的一个简单示例:
```python
import RPi.GPIO as GPIO
import time
# 假设我们有8个LED,编号从0到7
led_pins = [4, 17, 27, 22, 10, 9, 11, 5]
def set_led(pin, state):
GPIO.output(pin, state)
def cycle_lights():
for i in range(len(led_pins)):
set_led(led_pins[i], True) # 点亮
time.sleep(0.1) # 延迟一段时间
set_led(led_pins[i], False) # 熄灭
# 循环回到第一个LED
return led_pins[0] # 返回下一次循环的起始位置
try:
GPIO.setmode(GPIO.BCM) # 使用BCM模式
for pin in led_pins:
GPIO.setup(pin, GPIO.OUT) # 设置为输出
while True:
start_pin = cycle_lights()
for _ in range(len(led_pins)):
set_led(start_pin, True)
start_pin = (start_pin + 1) % len(led_pins) # 循环下一个LED
except KeyboardInterrupt:
GPIO.cleanup() # 关闭所有GPIO资源
```
这个例子中,首先设置GPIO,然后在一个无限循环中,每次循环先点亮当前LED,再切换到下个LED。如果按下Ctrl+C中断程序,会清理GPIO资源。