循环点亮灯程序是一种用于控制多个灯按照一定顺序和时间间隔进行点亮的程序。以下是一个简单的Python示例,用于模拟交通信号灯的循环点亮:
```python
import time
def traffic_light_simulation():
定义信号灯的状态及其持续时间(秒)
lights = {
'红灯': 10,
'绿灯': 15,
'黄灯': 5
}
while True:
for light, duration in lights.items():
print(f"当前信号灯状态: {light}, 持续时间: {duration}秒")
for remaining in range(duration, 0, -1):
print(f"剩余时间: {remaining}秒", end='\r') 在同一行更新剩余时间
time.sleep(1) 等待1秒
print() 换行以便于下一个状态的显示
启动信号灯模拟
traffic_light_simulation()
```
这个程序使用了一个无限循环的`while`语句,并在每次循环中遍历`lights`字典,打印当前灯的状态和剩余时间。然后,它使用`time.sleep(1)`函数暂停1秒,以便模拟每个灯的点亮时间。
如果你需要控制具体的硬件设备,如LED灯,你可以使用类似的逻辑,但需要将`print`语句替换为对硬件设备的实际控制代码。例如,使用Arduino编程语言,你可以这样写:
```cpp
int ledPins[] = {2, 3, 4}; // 3个指示灯的引脚
int startButtonPin = 5;// 启动按钮引脚
int stopButtonPin = 6; // 停止按钮引脚
bool isRunning = false;
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(ledPins[i], OUTPUT); // 设置引脚为输出模式
}
pinMode(startButtonPin, INPUT); // 设置启动按钮引脚为输入模式
pinMode(stopButtonPin, INPUT); // 设置停止按钮引脚为输入模式
}
void loop() {
if (digitalRead(startButtonPin) == HIGH && !isRunning) {
isRunning = true;
int ledIndex = 0;
while (isRunning) {
digitalWrite(ledPins[ledIndex], HIGH); // 点亮当前灯
delay(1000); // 延时1秒
digitalWrite(ledPins[ledIndex], LOW); // 熄灭当前灯
ledIndex = (ledIndex + 1) % 3; // 移动到下一个灯
}
}
}
```
这个Arduino程序在`setup`函数中配置了引脚模式,并在`loop`函数中实现了循环点亮和熄灭的逻辑。按下启动按钮后,三个灯将依次点亮,每个灯点亮10秒,然后熄灭,如此循环,直到按下停止按钮。