极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20881|回复: 1

4x4键盘密码控制电器

[复制链接]
发表于 2018-11-3 20:17:56 | 显示全部楼层 |阅读模式
硬件:
Arduino UNO
4x4键盘
9g舵机
LED 灯 x2
LCD1602 显示屏 (用了 a0,a1,a2,a3,a4,a5脚)

目的:输入密码开启电器

问题:现在是输入一数字或字母在LCD上只显示一个数字或字母,本想输入后在显示屏上显示输入的密码串.  有高手能指教的话谢谢了.

代码:
//Arduino通过输入密码控制电器运行
#include <Password.h>
#include <Keypad.h>
#include <Servo.h> //使用舵机
#include <LiquidCrystal.h>
LiquidCrystal lcd(A5,A4,A3,A2,A1,A0);                        //构造一个LiquidCrystal的类成员。使用数字IO ,12,11,5,4,3,2

Servo myservo; //声明 servo
Password password = Password( "1234" ); //解锁密码 ,输入密码后按A ,B 清空密码
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] = { 2, 3,4, 5 };
//列
byte colPins[COLS] = { 6, 7, 8, 9  };
// 建立键盘
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
  Serial.begin(9600);
  pinMode(A0, OUTPUT);  
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
  pinMode(11, OUTPUT);  //绿灯
  pinMode(12, OUTPUT);  //红灯
  myservo.attach(13); //舵机digital pin 13
//舵机
  keypad.addEventListener(keypadEvent); //增加对键盘的侦听
  lcd.begin(16,2);   //初始化LCD1602
  lcd.print("4x4 Key-Password");   //液晶显示Welcome to use!
  delay(1000);        //延时1000ms
  lcd.clear();        //液晶清屏
  }
void loop(){
  lcd.setCursor(0,0);        //设置液晶开始显示的指针位置
  lcd.print("4x4 Key-PassWord");  
  keypad.getKey();
  myservo.write(0);
  }
  //注意一些特殊的事件
  void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
  case PRESSED:
  lcd.setCursor(0,1);        //设置液晶开始显示的指针位置
  lcd.print("Enter: ");  
  lcd.print(eKey);  //显示输入的字母数字.  这里最好是显示完整的密码.
  //Serial.print("Enter: ");
  //Serial.println(eKey);
  delay(10);
  switch (eKey){
    case 'A': checkPassword(); delay(1); break;
    case 'B': password.reset(); delay(1); break;
    default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){
if (password.evaluate()){  
lcd.setCursor(0,1);        //设置液晶开始显示的指针位置
  lcd.print("Accepted");  
    //Serial.println("Accepted");//如果密码正确开锁
    delay(10);
    //如果开始工作,运行以下代码
    myservo.write(90); //转90度
    digitalWrite(11, HIGH);//打开
    delay(5000); //等待5秒
    digitalWrite(11, LOW);// 关闭
}else{
lcd.setCursor(0,1);        //设置液晶开始显示的指针位置
  lcd.print("Denied");  
//   Serial.println("Denied"); //如果密码错误保持锁定
     delay(10);
    //如果没有开始工作,运行以下代码
    myservo.write(0);
    digitalWrite(12, HIGH); //打开
    delay(5000); //等待5秒
    digitalWrite(12, LOW);//关闭
}
}





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2020-8-18 16:31:53 | 显示全部楼层
#include <Password.h>我试了一下程序说这库有问题,这密码库哪里有啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 05:47 , Processed in 0.045342 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表