#define LED0_PIN PA1 // 外接 LED0
#define LED1_PIN PA4 // 外接 LED1
#define BEEP_PIN PA0 // 蜂鸣器
#define KEY0_PIN PB0 // 模拟按键0
#define KEY1_PIN PB1 // 模拟按键1
#define KEY2_PIN PB2 // 模拟按键2
#define KEY3_PIN PB3 // 模拟按键3
int beepState = LOW; // 蜂鸣器状态
int led0State = HIGH; // 初始点亮 LED0
int led1State = LOW;
void setup() {
// 系统初始化阶段
pinMode(LED0_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(BEEP_PIN, OUTPUT);
pinMode(KEY0_PIN, INPUT_PULLUP);
pinMode(KEY1_PIN, INPUT_PULLUP);
pinMode(KEY2_PIN, INPUT_PULLUP);
pinMode(KEY3_PIN, INPUT_PULLUP);
// 初始状态
digitalWrite(LED0_PIN, led0State);
digitalWrite(LED1_PIN, led1State);
digitalWrite(BEEP_PIN, beepState);
}
void loop() {
int keyValue = getKeyValue();
// --- 按流程逻辑执行 ---
if (keyValue == 0) {
delay(10); // 判断1
}
else if (keyValue == 3) {
beepState = !beepState;
digitalWrite(BEEP_PIN, beepState);
}
else if (keyValue == 2) {
led1State = !led1State;
digitalWrite(LED1_PIN, led1State);
}
else if (keyValue == 1) {
led0State = !led0State;
led1State = !led1State;
digitalWrite(LED0_PIN, led0State);
digitalWrite(LED1_PIN, led1State);
}
// 回到获取键值(循环)
delay(50);
}
// 获取键值函数:返回1~3 或 0(默认)
int getKeyValue() {
if (digitalRead(KEY0_PIN) == LOW) return 0;
if (digitalRead(KEY1_PIN) == LOW) return 1;
if (digitalRead(KEY2_PIN) == LOW) return 2;
if (digitalRead(KEY3_PIN) == LOW) return 3;
return -1; // 无按键按下
}