基于arduino的门禁系统的代码和连接示意图
时间: 2023-08-17 08:04:58 浏览: 186
好的,以下是基于Arduino的门禁系统的代码和连接示意图。
首先,我们需要连接以下硬件设备:
- 一个Arduino板
- 一个电子锁
- 一个红外线传感器
- 一个蜂鸣器
- 一个4x4矩阵键盘
- 一些杜邦线
接线示意图如下:
![门禁系统接线示意图](https://img-blog.csdnimg.cn/20220203195856709.png)
代码如下:
```c
#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(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // 初始化矩阵键盘
const int lockPin = 13; // 定义电子锁引脚
const int buzzerPin = 12; // 定义蜂鸣器引脚
const int infraredPin = 11; // 定义红外线传感器引脚
bool isLocked = true; // 初始化门锁状态为锁定状态
void setup() {
pinMode(lockPin, OUTPUT); // 设置电子锁引脚为输出模式
pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式
pinMode(infraredPin, INPUT); // 设置红外线传感器引脚为输入模式
digitalWrite(lockPin, isLocked ? HIGH : LOW); // 根据门锁状态设置电子锁引脚的电平
}
void loop() {
char key = keypad.getKey(); // 获取当前按下的键
if(key != NO_KEY) { // 如果有按键按下
if(key == '#') { // 如果按下的是#键
bool isValid = checkPassword(); // 验证密码是否正确
if(isValid) {
isLocked = !isLocked; // 切换门锁状态
digitalWrite(lockPin, isLocked ? HIGH : LOW); // 根据门锁状态设置电子锁引脚的电平
if(isLocked) {
beep(3, 300); // 如果门锁状态为锁定状态,则发出三声短促的蜂鸣声
} else {
beep(1, 1000); // 如果门锁状态为解锁状态,则发出一声长蜂鸣声
}
} else {
beep(3, 500); // 如果密码错误,则发出三声长蜂鸣声
}
}
}
if(digitalRead(infraredPin) == HIGH && isLocked) { // 如果检测到有人靠近门且门处于锁定状态
beep(3, 500); // 发出三声长蜂鸣声
}
}
bool checkPassword() {
char password[5] = "1234"; // 设置密码
char input[5]; // 定义输入缓冲区
int i = 0;
while(i < 4) { // 最多输入四个字符
char key = keypad.getKey(); // 获取当前按下的键
if(key != NO_KEY) { // 如果有按键按下
input[i] = key; // 将输入的字符保存到缓冲区中
i++; // 缓冲区指针后移
beep(1, 100); // 发出一声短蜂鸣声
}
}
return strcmp(input, password) == 0; // 比较输入的密码和正确的密码是否一致
}
void beep(int times, int duration) {
for(int i = 0; i < times; i++) {
digitalWrite(buzzerPin, HIGH); // 发出蜂鸣声
delay(duration);
digitalWrite(buzzerPin, LOW); // 停止蜂鸣
delay(duration);
}
}
```
以上代码实现了以下功能:
- 当正确密码输入后,门锁状态切换为锁定或解锁状态。
- 当门处于锁定状态时,有人靠近门会发出三声长蜂鸣声。
- 当密码输入错误时,会发出三声长蜂鸣声。
这个门禁系统需要使用一个4x4矩阵键盘进行密码输入,可以根据实际需要进行修改。
阅读全文