#include <Keypad.h>
// 定义 LED 引脚
const int ledPin = LED_BUILTIN;
// 键盘配置(4x4 矩阵)
const byte ROWS = 4; // 四行
const byte COLS = 4; // 四列
// 定义键盘布局
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// 定义接线引脚
// 对应开发板引脚的编号(D1, D2...)
byte rowPins[ROWS] = { D1, D2, D3, D4 }; // 接键盘的 4 根行线
byte colPins[COLS] = { D5, D6, D7, D8 }; // 接键盘的 4 根列线
// 初始化键盘对象
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
// 初始化串口
Serial.begin(115200);
// 设置LED为输出模式
pinMode(ledPin, OUTPUT);
Serial.println("键盘控制LED已准备好!");
Serial.println("发送 1 → 灯亮");
Serial.println("发送 0 → 灯灭");
}
void loop() {
char cmd = keypad.getKey();
if (cmd) {
// 根据指令控制LED
if (cmd == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("收到:1 → LED 已亮");
}
else if (cmd == '0') {
digitalWrite(ledPin, LOW);
Serial.println("收到:0 → LED 已灭");
}
// 2~9 = 闪烁对应次数
else if (cmd >= '2' && cmd <= '9') {
// 把字符转成数字:'2' → 2,'5'→5...
int count = cmd - '0';
Serial.print("→ LED 闪烁 ");
Serial.print(count);
Serial.println(" 次");
// 执行闪烁
blinkLED(count);
}
}
}
// 闪烁函数:输入几次,就闪几次
void blinkLED(int times) {
for (int i = 0; i < times; i++) {
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
}
}