本节用4×4键盘设计一个密码锁的模型,从键盘获取输入键值,并将输入值与设定密码比较,若相同控制舵机转动打开锁就行了。

(1)4×4键盘及扩展库调用

4×4键盘有8根引线,每个按键对应一个行值和列值,通过定义一个二维数组就可以确定按的是哪个键了,如图1,调用Keypad.h扩展库,可以直接找到对应的键,不需自己编写程序去判断了。

注意:需把厂商提供的Keypad文件夹放到Arduino IDE的libraries文件夹里,否则编译会失败。

(2)电路图和连线

电路原理图如图2,D2-9接键盘8根引脚,注意线的排列顺序,如排列顺序不同,则编写程序时,定义的行号、列号顺序也不同。连线好的实物图如图2,用积木拼插了一个简单的门,当舵机臂水平时锁上,转到竖直就可以打开门了。

(3)程序编写

程序代码如下,结合注释同学们讨论、理解。

#include   //加载库

#include

char keys[4][4] = {

{'1','2','3','A'},

{'4','5','6','B'},

{'7','8','9','C'},

{'*','0','#','D'}

};//建立二维数组,用于设置按键的输出字符

byte rowPins[4] = {9,8,7,6}; //定义行引脚

byte colPins[4] = {5,4,3,2}; //定义列引脚

Keypad keypad = Keypad( makeKeymap(keys),rowPins, colPins, 4, 4

);//实例化Keypad 对象

Servo servo_10;

int m=0;

int i=0;

void setup(){

servo_10.attach(10);

pinMode(11, OUTPUT);

pinMode(12, OUTPUT);

}

void loop(){

char key = keypad.getKey(); //新建一个key 变量 用于获取键盘当前的值

if (key!= NO_KEY){

m=m+1;

if(i==0&key=='A'){

i=i+1;

}

elseif(i==1&key =='B'){

i=i+1;

digitalWrite(11,HIGH);

servo_10.write(180);

delay(10000);

digitalWrite(11,LOW);

m=0;

}

else{i=0;

}

if(m==2&i!=2){

digitalWrite(12,HIGH);

servo_10.write(90);

i=0;

m=0;

delay(5000);

digitalWrite(12,LOW);

}

}

}

(4)功能演示

当输入错误密码,红灯亮5秒并锁定输入5秒(5秒内输入无效),且舵机臂水平,门锁闭。若密码正确绿灯亮10秒,并锁定输入10秒,10秒后重置,舵机臂竖直向上,门打开,如图3。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com

C语言arduino密码锁实验报告,Arduino密码锁设计相关推荐

  1. C语言arduino密码锁实验报告,简易密码锁的制作-Arduino中文社区 - Powered by Discuz!...

    本帖最后由 chemistry 于 2018-11-8 16:57 编辑 一款简易密码锁一.功能: 将密码显示在lcd屏上,正常状态下电磁锁处于锁定状态,当输入密码与原设定密码一致时,打开电磁锁.同时 ...

  2. c语言数据结构五子棋实验报告,数据结构课程设计-五子棋

    数据结构课程设计-五子棋 姓 名: 学 院: 计算机与通信学院 班 级: 通信工程 101 班 指导老师: 目录一.需求分析 31.1 开发背景 .32.2 功能简介 .3二.系统设计 42.1 函数 ...

  3. c语言程序设计论文结构,c语言顺序结构设计实验报告.docx

    c语言顺序结构设计实验报告 姓名王中华班级学号31实验日期课程名称C语言程序设计指导教师陈强成绩 实验名称:C语言的三种结构-顺序结构 [实验目的] 1.理解C语言程序的三种基本结构.2.掌握变量定义 ...

  4. 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc

    C语言拼图游戏实验报告 课程设计实验报告 班级:光电104-2 姓名:刘云龙 学号:201058501220 一.实验题目:使用C语言编写一个小游戏(拼图游戏) 二.实验目的:C语言是每一个通信学生的 ...

  5. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc

    <C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  6. c语言结构体实验报告加注释,C语言结构体实验报告.doc

    C语言结构体实验报告 <高级语言程序设计>实验报告 实验序号:8 实验项目名称:结构体 学 号 姓 名 专业.班级 实验地点 指导教师 实验时间 一.实验目的及要求 1.掌握结构体变量的定 ...

  7. c语言贪吃蛇大作业报告,C语言贪吃蛇实验报告

    C语言贪吃蛇实验报告 C 语言程序设计实训报告姓 名 专 业 班 级 指导教师 二 011 年 7 月 14 日I I目录1 实训目的和要求 11.1 实训目的和任务 11.2 实训要求 12 实训任 ...

  8. c语言设计实验报告答案,武汉理工大学《C语言程序设计》实验报告答案

    武汉理工大学<C语言程序设计>实验报告答案 注:在Visual C++ 6.0编译环境中亲自调试通过,但不保证在Turbo C中通过. 实验二 选择结构的程序设计 (题目当初没抄下来,这是 ...

  9. 藏头诗c语言实验报告,c语言程序设计期末实验报告

    c语言程序设计期末实验报告 (23页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 实验报告实验项目名称:高级语言编程实验 实验学时:3实验 ...

  10. c语言词法分析器报告,C语言词法分析器构造实验报告.doc

    C语言词法分析器构造实验报告 02计算机(2) 2002374203 冯绍欣 一.题目要求: 完成一个C语言的词法分析器的构造.此词法分析器能识别附值语句.循环语句.条件语句.并能处理注释. 二.设计 ...

最新文章

  1. 戈峻:英特尔推动嵌入式教育 意在双赢
  2. angular指令:tm.tags添加/删除标签
  3. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
  4. IAR中断定义#pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void)啥意思?
  5. java jsp filename filepath 图片上传_SpringMVC实现文件上传与下载
  6. MySQL语句的语法
  7. php中update()函数,update_option()函数
  8. 解决`向github提交代码是老要输入用户名密码`
  9. #pragma pack(push,1)与#pragma pack(1)的区别(转)
  10. 深度学习(七十二)tensorflow 集群训练
  11. 循证e刊 安慰剂的前世今生
  12. 学计算机高考分数线,2020高考分数线预测
  13. 【RobotStudio学习笔记】(二)手动操作
  14. 如何在EDUIS中导出ETL字幕模板_给视频加字幕?这8个工具助力你的短视频创作!...
  15. ccf会议等级划分_Python计算山东新高考选考科目卷面原始成绩为等级成绩
  16. Android图片的三级缓存整理
  17. RTL8188无线网卡AP功能的开发过程
  18. 大学计算机系最努力的同学都是如何学习的?
  19. mt6577驱动开发 笔记版 转载请注明出处---crosskernel@gmail.com
  20. 权威报告发布:细数OKEx OKChain公链那些“五星级”的骚操作

热门文章

  1. 关于java常见异常举例
  2. JSP内置对象session和application
  3. C 使用拉依达准则(3σ准则)剔除异常数据( Net剔除一组数据中的奇异值)
  4. matlab的开方算法_区域生长算法(附MATLAB代码实现)
  5. php 生成不重复的会员卡号,php生成一个不重复的会员号
  6. JavaScript延时函数
  7. Maven 安装教程
  8. 做软件项目经理需要具备的品质和素质
  9. 游戏开发项目管理那些事
  10. 华为网络技术大赛笔记——服务器概述