福州布衣 发表于 2018-11-3 20:17:56

4x4键盘密码控制电器

硬件:
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 = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//行
byte rowPins = { 2, 3,4, 5 };
//列
byte colPins = { 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);//关闭
}
}





苏命 发表于 2020-8-18 16:31:53

#include <Password.h>我试了一下程序说这库有问题,这密码库哪里有啊
页: [1]
查看完整版本: 4x4键盘密码控制电器