写出一个程序
时间: 2024-02-09 08:13:19 浏览: 15
以下是一个简单的 Arduino 程序,实现了一个十字路口红绿灯系统的基本功能:
```
// 定义各个 LED 灯的引脚号
#define RED_PIN 2
#define YELLOW_PIN 3
#define GREEN_PIN 4
#define DIGIT1_PIN 5
#define DIGIT2_PIN 6
#define DIGIT3_PIN 7
// 定义倒计时时间
#define COUNTDOWN_TIME 20
void setup() {
// 初始化各个引脚
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(DIGIT1_PIN, OUTPUT);
pinMode(DIGIT2_PIN, OUTPUT);
pinMode(DIGIT3_PIN, OUTPUT);
// 开始时将两个路口的红灯亮起
digitalWrite(RED_PIN, HIGH);
digitalWrite(RED_PIN + 3, HIGH);
}
void loop() {
// 控制第一个路口的红绿灯
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(RED_PIN, LOW);
digitalWrite(YELLOW_PIN, LOW);
countdown(COUNTDOWN_TIME);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(YELLOW_PIN, HIGH);
countdown(5);
digitalWrite(YELLOW_PIN, LOW);
digitalWrite(RED_PIN, HIGH);
// 控制第二个路口的红绿灯
digitalWrite(GREEN_PIN + 3, HIGH);
digitalWrite(RED_PIN + 3, LOW);
digitalWrite(YELLOW_PIN + 3, LOW);
countdown(COUNTDOWN_TIME);
digitalWrite(GREEN_PIN + 3, LOW);
digitalWrite(YELLOW_PIN + 3, HIGH);
countdown(5);
digitalWrite(YELLOW_PIN + 3, LOW);
digitalWrite(RED_PIN + 3, HIGH);
}
void countdown(int seconds) {
for (int i = seconds; i >= 0; i--) {
// 显示倒计时时间
int num = i % 1000;
digitalWrite(DIGIT1_PIN, num / 100);
digitalWrite(DIGIT2_PIN, num / 10 % 10);
digitalWrite(DIGIT3_PIN, num % 10);
// 等待一秒
delay(1000);
}
}
```
这个程序的基本思路就是先控制一个路口的红绿灯,等待一段时间后再控制另一个路口的红绿灯,不断循环。倒计时函数 `countdown` 用于显示倒计时时间。需要注意的是,这个程序只是一个简单的示例,实际应用中可能需要添加更多的功能和调整参数。