// 按钮引脚
const int button1Pin = 3;
const int button2Pin = 4;
const int button3Pin = 5;
const int resetButtonPin = 2; // 复位按钮引脚
// 灯引脚
const int led1Pin = 6;
const int led2Pin = 7;
const int led3Pin = 8;
// 按钮状态
int button1State = 0;
int button2State = 0;
int button3State = 0;
int resetButtonState = 0;
void setup() {
// 设置按钮引脚为输入
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(button3Pin, INPUT_PULLUP);
pinMode(resetButtonPin, INPUT_PULLUP);
// 设置LED引脚为输出
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
// 初始化灯灭
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
Serial.begin(9600);
}
void loop() {
// 读取按钮的状态
button1State = !digitalRead(button1Pin);
button2State = !digitalRead(button2Pin);
button3State = !digitalRead(button3Pin);
resetButtonState = !digitalRead(resetButtonPin);
// 检查是否有按钮被按下
if (button1State == HIGH) {
digitalWrite(led1Pin, HIGH); // 按下按钮1,点亮灯1
waitForReset(); // 等待复位
}
else if (button2State == HIGH) {
digitalWrite(led2Pin, HIGH); // 按下按钮2,点亮灯2
waitForReset(); // 等待复位
}
else if (button3State == HIGH) {
digitalWrite(led3Pin, HIGH); // 按下按钮3,点亮灯3
waitForReset(); // 等待复位
}
}
void waitForReset() {
// 等待复位按钮被按下
while (resetButtonState == LOW) {
resetButtonState = !digitalRead(resetButtonPin);
}
// 复位后关闭所有灯,准备下一轮
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
delay(100);
}