完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述 2 因素身份验证锁 什么是银行安全数字门锁系统? 简单地说,它是一个数字门锁系统,它通过使用数字键盘和使用 Arduino Uno 板帮助门锁的安全性。这个想法有助于银行储物柜的安全 项目所需的组件清单 Arduino UNO 16*2液晶显示器 伺服电机 Arduino 的 4*3 或 4*4 矩阵键盘 3D打印门锁或定制门锁系统 4” / 6”塑料盒、跳线、螺母螺栓、塑料外壳等。 用于 1 安培 5 伏移动充电器电源的附加组件。 项目描述 首先,该项目的大脑是 Arduino UNO 板。Arduino UNO 板与伺服电机一起连接到 LCD。 在这里,伺服电机用于锁定或解锁门上的闩锁。 16x2 LCD(16 列和 2 行)用于在 Arduino 的帮助下显示消息。 使用的伺服电机是 5V Towerpro SG90。该伺服电机是基础级伺服电机,无需任何外部模块即可与 Arduino 配合使用。 本项目使用了 4*4 矩阵键盘(但由于没有 4*4 键盘部分,我在上面的图形表示中使用了 4*3 键盘),但这不是问题,因为 4*3 矩阵键盘可以工作我使用的代码很好。 我们还需要一个用于密码输入和手动锁定我们定制的门锁的键盘。键盘共有 16 个按键。在所有键中,行中有 4 个键(R1、R2、R3、R4),列中有 4 个键(C1、C2、C3、C4)。 每当按下一个键时,就会在相应的行和列之间建立连接。 代码 #include <键盘.h> #include #include <伺服.h> 伺服myservo; 液晶液晶(A0、A1、A2、A3、A4、A5); #define Password_Lenght 7 // 为六个字符提供足够的空间 + NULL 字符 整数位置 = 0;// 存储伺服位置的变量 字符数据[密码长度];// 6 是它可以容纳的字符数 + 空字符 = 7 char Master[Password_Lenght] = "123456"; 字节data_count = 0,master_count = 0; 布尔 Pass_is_good; 字符自定义键; 常量字节 ROWS = 4; 常量字节 COLS = 3; 字符键[ROWS][COLS] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; 布尔门=真; 字节 rowPins[ROWS] = {1, 2, 3, 4}; //连接到键盘的行引脚 字节 colPins[COLS] = {5, 6, 7}; //连接到键盘的列引脚 键盘 customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //初始化类NewKeypad的一个实例 无效设置() { myservo.attach(9); 伺服关闭(); lcd.begin(16, 2); lcd.print("Arduino 门"); lcd.setCursor(0, 1); lcd.print("--看项目--"); 延迟(3000); lcd.clear(); } 无效循环() { 如果(门 == 0) { customKey = customKeypad.getKey(); if (customKey == '#') { lcd.clear(); 伺服关闭(); lcd.print("门已关闭"); 延迟(3000); 门 = 1; } } 否则打开(); } 无效清除数据() { 而(数据计数!= 0) { // 这可以用于任何数组大小, 数据[data_count--] = 0; //清除新数据的数组 } 返回; } 无效伺服打开() { for (pos = 180; pos >= 0; pos -= 5) { // 从 0 度变为 180 度 // 以 1 度为单位 myservo.write(pos); // 告诉伺服器转到变量 'pos' 中的位置 延迟(15);// 等待 15ms 让舵机到达位置 } } 无效伺服关闭() { for (pos = 0; pos <= 180; pos += 5) { // 从 180 度变为 0 度 myservo.write(pos); // 告诉伺服器转到变量 'pos' 中的位置 延迟(15);// 等待 15ms 让舵机到达位置 } } } 无效打开() { lcd.setCursor(0, 0); lcd.print("输入密码"); customKey = customKeypad.getKey(); if (customKey) // 确保某个键被实际按下,等于 (customKey != NO_KEY) { 数据[data_count] = customKey; // 将字符存储到数据数组中 lcd.setCursor(data_count, 1); // 移动光标以显示每个新字符 lcd.print(数据[data_count]); // 在所述光标处打印字符 数据计数++;// 将数据数组加 1 以存储新字符,同时跟踪输入的字符数 } if (data_count == Password_Lenght - 1) // 如果数组索引等于预期字符数,则将数据与 master 进行比较 { if (!strcmp(Data, Master)) // 等于 (strcmp(Data, Master) == 0) { lcd.clear(); 伺服打开(); lcd.print("门开着"); 门 = 0; } lcd.clear(); lcd.print("密码错误"); 延迟(1000); 门 = 1; } 清除数据(); } 别的 {}
|
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
9572 浏览 0 评论
8940 浏览 0 评论
13327 浏览 0 评论
4386 浏览 0 评论
4640 浏览 0 评论
350浏览 1评论
486浏览 1评论
IPC-6012E CN 2020中文 CN 刚性印制板的鉴定及性能规范
583浏览 1评论
380浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:56 , Processed in 1.054900 second(s), Total 43, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号