Secure keypad
Dependencies: Keypad TextLCD mbed
Diff: main.cpp
- Revision:
- 0:93cb8707aa8c
- Child:
- 1:5461144fd540
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Apr 23 01:23:45 2018 +0000 @@ -0,0 +1,182 @@ + #include "mbed.h" + #include "Keypad.h" +#include "TextLCD.h" + Keypad kpad(PTC8, PTC1, PTB19, PTB18, PTC5, PTC7, PTC0, PTC9); + Serial pc(USBTX, USBRX); + TextLCD lcd(PTA1, PTB23, PTA2, PTC2, PTC3, PTC12, TextLCD::LCD16x2); +/* +col1, col2, col3, col4, +row1, row2, row3, row4 +*/ + +const int number_of_chars = 4; +const char pass_user1[number_of_chars] = {'1','2','3','A'}; //HA +const char pass_user2[number_of_chars] = {'2','2','3','A'}; //FA +const char pass_user3[number_of_chars] = {'5','2','3','A'}; //AA +const char pass_user4[number_of_chars] = {'6','2','3','A'}; //MA +const char pass_user5[number_of_chars] = {'7','2','3','A'}; //FF + +char enterd_pass[number_of_chars] = {' ', ' ',' ',' '}; + +DigitalOut led_red(LED_RED); +DigitalOut led_green(LED_GREEN); +DigitalOut active_buzzer(PTC4); //Buzzer on pin PTC4=D9 + + +//Serial pc(USBTX, USBRX); + +int main() +{ + char key; + int i; + int user_index1=0; + int user_index2=0; + int user_index3=0; + int user_index4=0; + int user_index5=0; + + int released =1;; + + + led_green = 0; + led_red = 0; + active_buzzer = 0; + + + + lcd.cls(); + wait(0.001); + + + + while(true) { + + lcd.locate(0,0); // col, row + lcd.printf("Enter Password:"); + + // Reading the password characters + for(i=0; i<number_of_chars; i++) { + key = kpad.ReadKey(); + + if(key == '\0') + released = 1; //set the flag when all keys are released + if((key != '\0') && (released == 1)) { //if a key is pressed AND previous key was released + enterd_pass[i]=key; + lcd.locate(i,1); // col, row + lcd.printf("*"); + + released = 0; //clear the flag to indicate that key is still pressed + } +else +i--; + + + + } + + wait(0.5); + + lcd.locate(0,1); // col, row + lcd.printf(" " ); + + // comparing passwords + + ///////// user 1 /////////////// + for(i=0; i<number_of_chars; i++) { + if( enterd_pass[i] == pass_user1[i] ) { + user_index1 = 1; + } else { + user_index1 = 0; + break; + } + } + + + + ///////// user 2 /////////////// + for(i=0; i<number_of_chars; i++) { + if( enterd_pass[i] == pass_user2[i] ) { + user_index2 = 2; + } else { + user_index2 = 0; + break; + } + } + ///////// user 3 /////////////// + for(i=0; i<number_of_chars; i++) { + if( enterd_pass[i] == pass_user3[i] ) { + user_index3 = 3; + } else { + user_index3 = 0; + break; + } + } + ///////// user 4 /////////////// + for(i=0; i<number_of_chars; i++) { + if( enterd_pass[i] == pass_user4[i] ) { + user_index4 = 4; + } else { + user_index4 = 0; + break; + } + } + ///////// user 5 /////////////// + for(i=0; i<number_of_chars; i++) { + if( enterd_pass[i] == pass_user5[i] ) { + user_index5 = 5; + } else { + user_index5 = 0; + break; + } + } +////////////////////////////////////////////////// + if( (1 == user_index1)||(2 == user_index2)||(3 == user_index3)||(4 == user_index4)||(5 == user_index5) ) { + pc.printf("Access granted "); + led_red = 1; + active_buzzer = 1; + lcd.locate(0,1); // col, row + lcd.printf("User: "); + + if(1 == user_index1) { + lcd.locate(6,1); // col, row + lcd.printf("HA"); + } + if(2 == user_index2) { + lcd.locate(6,1); // col, row + lcd.printf("FA"); + } + if(3 == user_index3) { + lcd.locate(6,1); // col, row + lcd.printf("AA"); + } + if(4 == user_index4) { + lcd.locate(6,1); // col, row + lcd.printf("MA"); + } + if(5 == user_index5) { + lcd.locate(6,1); // col, row + lcd.printf("FF"); + } + + wait(1); + active_buzzer = 0; + led_red = 0; + wait(1); + lcd.cls(); + + + } + + else { + lcd.locate(0,0); // col, row + lcd.printf("Access denied "); + led_green = 1; + wait(1); + led_green = 0; + + } + + + } +} +