#include<Keypad.h>
#include<LiquidCrystal.h>
#include<EEPROM.h>
#include<Servo.h>
Servo myservo;
#define buzzer A3
LiquidCrystal lcd(13,4,3,2,A1,A0);
byte chia1[] = {
B00000,
B00000,
B01000,
B10100,
B10011,
B10100,
B01000,
B00000
};
byte chia2[] = {
B00000,
B00000,
B00000,
B00101,
B11111,
B00000,
B00000,
B00000
};
byte khoa[] = {
B01110,
B10001,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111
};
byte mo[] = {
B01110,
B10001,
B10000,
B10000,
B11111,
B11011,
B11011,
B11111
};
byte cuoi[] = {
B00000,
B01010,
B00000,
B00000,
B10001,
B01110,
B00000,
B00000
};
byte muiten[] = {
B00000,
B00000,
B00100,
B00010,
B11111,
B00010,
B00100,
B00000
};
byte dung[] = {
B00000,
B00000,
B00001,
B00010,
B10100,
B01000,
B00000,
B00000
};
byte sai[] = {
B00000,
B00000,
B00000,
B01010,
B00100,
B01010,
B00000,
B00000
};
char password[4];
char pass[4],pass1[4];
int i=0;
char customKey=0;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {5, 6, 7, 8};
byte colPins[COLS] = {9, 10, 11, 12};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
myservo.attach(A2);
lcd.begin(16,2);
lcd.createChar(0,cuoi);lcd.createChar(2,muiten);lcd.createChar(3,dung);lcd.createChar(4,sai);lcd.createChar(5,khoa);lcd.createChar(6,mo);lcd.createChar(7,chia1);lcd.createChar(1,chia2);
pinMode(buzzer, OUTPUT);
lcd.setCursor(0,0);
lcd.print("|--------------|");
lcd.setCursor(7,1);
lcd.write(byte (0));
lcd.setCursor(8,1);
lcd.write(byte (0));
delay(1000);
lcd.clear();
lcd.setCursor(7,0);
lcd.write(byte (0));
lcd.setCursor(8,0);
lcd.write(byte (1));
lcd.setCursor(0,1);
lcd.print("|--------------|");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass mo:");
lcd.setCursor(14,0);
lcd.write(byte (5));
lcd.setCursor(2,1);
lcd.write(byte (7));
lcd.setCursor(3,1);
lcd.write(byte (1));
lcd.setCursor(6,1);
for(int j=0;j<4;j++)
EEPROM.write(j, j+49);
for(int j=0;j<4;j++)
pass[j]=EEPROM.read(j);
}
void loop()
{
myservo.write(0);
customKey = customKeypad.getKey();
if(customKey=='#')
change();
if (customKey)
{
password[i++]=customKey;
lcd.print("*");
beep();
}
if(i==4)
{
delay(200);
for(int j=0;j<4;j++)
pass[j]=EEPROM.read(j);
if(!(strncmp(password, pass,4)))
{
myservo.write(0);
beep();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Mat khau dung");
lcd.setCursor(14,0);
lcd.write(byte (3));
myservo.write(180);
lcd.setCursor(7,1);
lcd.write(byte (6));
delay(5000);
lcd.setCursor(0,1);
lcd.print("# Thay doi pass");
lcd.setCursor(1,1);
lcd.write(byte (2));
delay(2000);
myservo.write(0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass mo:");
lcd.setCursor(14,0);
lcd.write(byte (5));
lcd.setCursor(6,1);
i=0;
myservo.write(0);
}
else
{
digitalWrite(buzzer, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Mat khau sai");
lcd.setCursor(13,0);
lcd.write(byte (4));
lcd.setCursor(0,1);
lcd.print("# Thay doi pass");
lcd.setCursor(1,1);
lcd.write(byte (2));
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass mo:");
lcd.setCursor(14,0);
lcd.write(byte (5));
lcd.setCursor(6,1);
i=0;
digitalWrite(buzzer, LOW);
}
}
}
void change()
{
int j=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass cu:");
lcd.setCursor(6,1);
while(j<4)
{
char key=customKeypad.getKey();
if(key)
{
pass1[j++]=key;
lcd.print("*");
beep();
}
key=0;
}
delay(500);
if((strncmp(pass1, pass, 4)))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sai pass");
lcd.setCursor(9,0);
lcd.write(byte (4));
lcd.setCursor(0,1);
lcd.print("Hay thu lai");
delay(1000);
}
else
{
j=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass moi:");
lcd.setCursor(0,1);
while(j<4)
{
char key=customKeypad.getKey();
if(key)
{
pass[j]=key;
lcd.print(key);
EEPROM.write(j,key);
j++;
beep();
}
}
lcd.setCursor(7,1);
lcd.print("Xong");
lcd.setCursor(12,1);
lcd.write(byte (3));
delay(1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nhap pass mo:");
lcd.setCursor(6,1);
customKey=0;
}
void beep()
{
digitalWrite(buzzer, HIGH);
delay(20);
digitalWrite(buzzer, LOW);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd2:VSS
lcd2:VDD
lcd2:V0
lcd2:RS
lcd2:RW
lcd2:E
lcd2:D0
lcd2:D1
lcd2:D2
lcd2:D3
lcd2:D4
lcd2:D5
lcd2:D6
lcd2:D7
lcd2:A
lcd2:K
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3
keypad1:C4
servo1:GND
servo1:V+
servo1:PWM
bz1:1
bz1:2