利用薄膜键盘与舵机制作密码门锁

开头:由于自己买的LCD没有焊接,需要的arduino插口较多,所以没有选择LCD进行显示信息而改为电脑串口显示器窗口显示,代码纯手打,开源不易,请勿喷。
接线:薄膜键盘的针脚是从2接到9
舵机是10号脚
红色led接12号
绿色led接13号
蜂鸣器接11号,当然可以将蜂鸣器和红色灯接到一起,但是声音不大。

#include <Keypad.h> 
#include<Servo.h>
const byte ROWS = 4; //4 rows
const byte COLS = 4; //4 columns
char passwd='1';int temp=1;
char keys[ROWS][COLS] = {//对应自己想要打印出的字符
  {'D','=','0','*'},
  {'C','9','8','7'},
  {'B','6','5','4'},
  {'A','3','2','1'}};
String firstNum = "";
float password = 456;//设置默认密码
int demo=1;//这是用来转换模式用的
Servo myservo;
int pos=0;//舵机旋转角度
float result = 0.0;//结果
char operatr = ' ';
byte rowPins[ROWS] = {5, 4, 3, 2}; //连接到键盘的行插脚
byte colPins[COLS] = {9,8, 7, 6}; //连接到键盘的列插脚
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//实例化Keypad 对象
void setup(){
  Serial.begin(9600);
  pinMode(11,OUTPUT);//蜂鸣器
  pinMode(12,OUTPUT);//红色led灯
  pinMode(13,OUTPUT);//绿色led灯
  digitalWrite(12,LOW);digitalWrite(13,LOW);myservo.attach(10);
}
void loop(){
  Serial.println("如忘记密码请添加微信18476618070进行修改密码。");
  Serial.println("输入密码后按'#'键以确认,按’*’键重输:");
  Serial.print("请输入密码:");
  while(1){char key = keypad.getKey();//新建一个key 变量 用于获取键盘当前的值
  if(demo==1){
  	if (key != NO_KEY && (key == '1' || key == '2' || key == '3'||key == 'A' ||key == 'B' ||key == 'C' ||key == 'D'  || key == '4' || key == '5' ||key == '.' ||key == '*' || key == '6' || key == '7' || key == '8' || key == '9' || key == '0')) {
 	 Serial.print(key);firstNum =firstNum +key;}   
 	 else if(key != NO_KEY &&(key == '='  )){demo=2;}  }      
 	 if(demo==2)
  		{Serial.println("");
  	if(firstNum.toFloat() == password){Serial.println("欢迎回家!");
  	for(demo=1;demo<=3;demo++){
		digitalWrite(13,HIGH);delay(200);digitalWrite(13,LOW);delay(200);}
  	for(demo=1;demo<=1;demo++)
  		{for(pos=0;pos<=180;pos++)
 	 {myservo.write(pos);delay(5);}
 	 delay(2000);
 	 for(pos=180;pos>=0;pos--)
  		{myservo.write(pos);delay(5);}}
  	Serial.print("请输入密码:");}
 	 else{Serial.print("输入错误!请重新输入密码:");
 	 for(demo=1;demo<=3;demo++){
  		digitalWrite(12,HIGH);tone(11,2093);delay(200);digitalWrite(12,LOW);noTone(11);delay(200);}}
	  firstNum = "";demo=1;temp=0;}   
  } }

下面是效果图:
在这里插入图片描述
在这里插入图片描述

  • 19
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值