#include <Keypad.h>

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'} };

// 定义矩阵键盘的引脚 byte rowPins[ROWS] = {9, 8, 7, 6}; byte colPins[COLS] = {5, 4, 3, 2};

// 创建Keypad对象 Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

// 定义密码 const String PASSWORD = '1234';

// 定义LED灯引脚 const int LED_PIN = 13;

void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(9600); }

void loop() { char key = keypad.getKey(); // 获取按下的键位

if (key != NO_KEY) { // 如果有按键被按下 Serial.println(key); // 输出按下的键位

if (checkPassword(key)) { // 检查密码是否正确
  digitalWrite(LED_PIN, HIGH); // 点亮LED灯
  delay(1000); // 延时1秒
  digitalWrite(LED_PIN, LOW); // 熄灭LED灯
}

} }

bool checkPassword(char key) { static String inputPassword = ''; // 定义静态变量,用于存储输入的密码

if (key == '') { // 如果按下的是“”键,清空输入的密码 inputPassword = ''; return false; } else if (key == '#') { // 如果按下的是“#”键,检查输入的密码是否正确 if (inputPassword == PASSWORD) { inputPassword = ''; return true; } else { inputPassword = ''; return false; } } else { // 如果按下的是数字键,则将其添加到输入的密码中 inputPassword += key; return false; } }

在这个程序中,我们使用了Keypad库来读取 4x4 矩阵键盘的输入。当按下一个键时,程序会检查输入的密码是否正确。如果密码正确,LED 灯将会点亮。如果密码错误,程序会清空输入的密码并等待下一次输入。

注意:这个程序只是一个简单的示例,实际使用中应该采取更加安全的密码验证方式,比如使用哈希函数等技术来加密密码。

Arduino 密码箱程序:使用 4x4 矩阵键盘实现密码验证

原文地址: https://www.cveoy.top/t/topic/nGrx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录