arduino 制作密码锁代码
时间: 2023-09-08 11:11:29 浏览: 259
以下是一个简单的 Arduino 密码锁代码,使用 4x4 的矩阵键盘和 OLED 显示屏:
```
#include <Keypad.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
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(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char password[] = "1234"; // 设置密码
char inputPassword[5]; // 存储输入的密码
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Enter Password:");
display.display();
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
Serial.println(key);
delay(10);
if (key == '#') {
if (strcmp(inputPassword, password) == 0) { // 比较两个字符串是否相同
display.clearDisplay();
display.setCursor(0, 0);
display.println("Password Correct!");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0, 0);
display.println("Enter Password:");
display.display();
memset(inputPassword, 0, sizeof(inputPassword)); // 清空 inputPassword 数组
} else {
display.clearDisplay();
display.setCursor(0, 0);
display.println("Password Incorrect!");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0, 0);
display.println("Enter Password:");
display.display();
memset(inputPassword, 0, sizeof(inputPassword)); // 清空 inputPassword 数组
}
} else {
strcat(inputPassword, &key); // 将输入的字符添加到 inputPassword 数组中
display.clearDisplay();
display.setCursor(0, 0);
display.println("Enter Password:");
display.setCursor(0, 15);
display.println(inputPassword);
display.display();
}
}
}
```
该代码使用 Keypad 库来读取 4x4 的矩阵键盘输入,并使用 Adafruit_SSD1306 库来控制 OLED 显示屏。在 setup() 中,代码初始化了 Keypad 和 OLED 显示屏,并显示了 "Enter Password:" 的提示信息。
在 loop() 中,代码使用 keypad.getKey() 读取矩阵键盘输入,并将输入的字符添加到 inputPassword 数组中。当按下 "#" 键时,代码使用 strcmp() 函数比较输入的密码和预设的密码是否相同。如果相同,则在 OLED 显示屏上显示 "Password Correct!",否则显示 "Password Incorrect!"。然后代码清空 inputPassword 数组,重新显示 "Enter Password:" 的提示信息。
注意:这是一个简单的密码锁示例,不具备高安全性,请勿用于重要场合。
阅读全文