初始状态,LED等全灭;按一下按键,LED灯全亮;再按一下,LED开始闪烁;再按一下,LED开始交替亮灭,0,2亮,然后1,3亮。若是再按按键则与第一次按键状态相同,如此循环。
时间: 2023-05-25 15:03:19 浏览: 159
这个程序可以用Arduino语言实现。下面是一个简单的示例代码:
```
const int buttonPin = 2; // 按键引脚
const int ledPin[] = {3, 4, 5, 6}; // LED引脚
int ledState = 0; // LED状态
int buttonState = 0; // 按键状态
int lastButtonState = 0; // 上一次按键状态
unsigned long lastDebounceTime = 0; // 上一次按键按下的时间
unsigned long debounceDelay = 50; // 消抖时间
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPin[i], OUTPUT); // 设置LED引脚为输出模式
}
pinMode(buttonPin, INPUT_PULLUP); // 设置按键引脚为上拉输入模式
}
void loop() {
buttonState = digitalRead(buttonPin); // 读取按键状态
if (buttonState != lastButtonState) {
lastDebounceTime = millis(); // 更新上一次按键按下的时间
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (buttonState == LOW) { // 按键被按下
ledState++;
if (ledState > 3) {
ledState = 0;
}
switch (ledState) {
case 0:
digitalWrite(ledPin[0], HIGH);
digitalWrite(ledPin[1], HIGH);
digitalWrite(ledPin[2], HIGH);
digitalWrite(ledPin[3], HIGH);
break;
case 1:
digitalWrite(ledPin[0], LOW);
digitalWrite(ledPin[1], LOW);
digitalWrite(ledPin[2], LOW);
digitalWrite(ledPin[3], LOW);
break;
case 2:
// LED开始闪烁
for (int i = 0; i < 3; i++) {
digitalWrite(ledPin[0], HIGH);
digitalWrite(ledPin[1], HIGH);
digitalWrite(ledPin[2], HIGH);
digitalWrite(ledPin[3], HIGH);
delay(500);
digitalWrite(ledPin[0], LOW);
digitalWrite(ledPin[1], LOW);
digitalWrite(ledPin[2], LOW);
digitalWrite(ledPin[3], LOW);
delay(500);
}
break;
case 3:
// LED开始交替亮灭
for (int i = 0; i < 10; i++) {
digitalWrite(ledPin[0], (i % 2 == 0) ? HIGH : LOW);
digitalWrite(ledPin[1], (i % 2 == 0) ? LOW : HIGH);
digitalWrite(ledPin[2], (i % 2 == 0) ? HIGH : LOW);
digitalWrite(ledPin[3], (i % 2 == 0) ? LOW : HIGH);
delay(1000);
}
break;
}
}
}
lastButtonState = buttonState; // 更新上一次按键状态
}
```
阅读全文