https://github.com/andersmmg/arduino-keypad-lock
Arduino Keypad Lock with Password Changing
https://github.com/andersmmg/arduino-keypad-lock
Last synced: 4 months ago
JSON representation
Arduino Keypad Lock with Password Changing
- Host: GitHub
- URL: https://github.com/andersmmg/arduino-keypad-lock
- Owner: andersmmg
- License: gpl-3.0
- Created: 2016-02-24T00:51:12.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-16T00:18:33.000Z (about 10 years ago)
- Last Synced: 2025-03-11T22:17:54.204Z (over 1 year ago)
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# arduino-keypad-lock
Arduino Keypad Lock with Password Changing
#include
#include
String newPasswordString; //hold the new password
char newPassword[6]; //charater string of newPasswordString
//initialize password to 1234
//you can use password.set(newPassword) to overwrite it
Password password = Password( "1234" );
Password passwordset = Password( "" );
boolean change = false;// Are we changing the code?
byte maxPasswordLength = 4; // Self-explanatory
byte currentPasswordLength = 0;//^ Same as above ^
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
//Define the keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};// Set yours, they can often be different
//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {6,7,8,9}; //connect to row pinouts
// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {2,3,4,5}; //connect to column pinouts
// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);// Set up Serial
}
void loop(){
if(change=false){// If we aren't changing password
char key = keypad.getKey();// Get the key
if (key != NO_KEY){// If there is a key being pressed
delay(60); // Wait a bit
switch (key){// Evaluate the key pressed
case '#': checkPassword(); break;
case '*': change=true; break;
default: processNumberKey(key);
}
}
}
else {// Same as above, but is changing password instead of
// entering the code
char key = keypad.getKey();
if (key != NO_KEY){
delay(60);
switch (key){
case '#': /* nothing */ break;
case '*': changePassword(); change=false; break;
default: processChange(key);
}
}
}
}
void processChange(char key) {
Serial.print(key);
currentPasswordLength++;
passwordset.append(key);
if (currentPasswordLength == maxPasswordLength) {
password.set(passwordset);// Set the passcode
}
}
void processNumberKey(char key) {
Serial.print(key);
currentPasswordLength++;
password.append(key);
if (currentPasswordLength == maxPasswordLength) {
checkPassword();// Validate the entered code
}
}
void checkPassword() {// Validation
if (password.evaluate()){
Serial.println(" OK.");
} else {
Serial.println(" Wrong password!");
}
resetPassword();
}
void resetPassword() {// Reset password. Duh :)
password.reset();
currentPasswordLength = 0;
}
void changePassword() {// Change the password
newPasswordString = "123";
newPasswordString.toCharArray(newPassword, newPasswordString.length()+1); //convert string to char array
password.set(newPassword);
resetPassword();
Serial.print("Password changed to ");
Serial.println(newPasswordString);
}