单片机两个按键同时按下 用if else语句 实现三个灯亮
时间: 2024-10-07 15:03:30 浏览: 59
在单片机应用中,如果需要通过两个按键同时按下控制三个灯的亮灭,可以利用嵌套的`if...else if...else`结构来实现。这里假设我们有两个按键A和B,以及对应的三个LED灯L1、L2、L3。
首先,你需要初始化按键和LED,并设置初始状态,比如未按下时灯都是熄灭的:
```c
void init() {
// 初始化按键A和B
pinMode(A_BUTTON_PIN, INPUT_PULLUP);
pinMode(B_BUTTON_PIN, INPUT_PULLUP);
// 初始化LED灯
pinMode(L1_PIN, OUTPUT);
pinMode(L2_PIN, OUTPUT);
pinMode(L3_PIN, OUTPUT);
digitalWrite(L1_PIN, LOW); // 灯L1默认关闭
digitalWrite(L2_PIN, LOW); // 灯L2默认关闭
digitalWrite(L3_PIN, LOW); // 灯L3默认关闭
}
```
然后,在主循环中检查按键的状态并相应地控制灯光:
```c
void mainLoop() {
int A_state = digitalRead(A_BUTTON_PIN);
int B_state = digitalRead(B_BUTTON_PIN);
// 检查A键和B键的状态
if (A_state == LOW && B_state == LOW) { // 如果两者都按下
// 控制三个灯亮
digitalWrite(L1_PIN, HIGH);
digitalWrite(L2_PIN, HIGH);
digitalWrite(L3_PIN, HIGH);
} else if (A_state == LOW) { // 只有A键按下
// 可以选择灯L1单独亮起或其他操作
digitalWrite(L1_PIN, HIGH);
digitalWrite(L2_PIN, LOW);
digitalWrite(L3_PIN, LOW);
} else if (B_state == LOW) { // 只有B键按下
// 类似于A键单独操作,控制灯L2
digitalWrite(L1_PIN, LOW);
digitalWrite(L2_PIN, HIGH);
digitalWrite(L3_PIN, LOW);
} else { // 两键都不按
// 保持初始状态,灯全关
digitalWrite(L1_PIN, LOW);
digitalWrite(L2_PIN, LOW);
digitalWrite(L3_PIN, LOW);
}
}
```
每次循环都会检测按键状态并更新灯的状态。
阅读全文