kl25z secure keypad 4x4 keypad with multiple passwords,users, and outputs. (buzzer)
Dependencies: mbed TextLCD Keypad
main.cpp
- Committer:
- coryburke
- Date:
- 2018-12-07
- Revision:
- 2:30db7d0108c1
- Parent:
- 1:5461144fd540
File content as of revision 2:30db7d0108c1:
#include "mbed.h" #include "Keypad.h" #include "TextLCD.h" //pin selection for keypad matrix Keypad kpad(PTE2,PTE3,PTE4,PTE5,PTB8,PTB9,PTB10,PTB11); /* col1, col2, col3, col4, row1, row2, row3, row4 */ // serial connection to pc for debugging and troubleshooting Serial pc(USBTX, USBRX); //define passwords of for individual users const uint32_t number_of_chars = 5; //password length const char pass_user1[number_of_chars] = {'1','2','3','4','*'}; // const char pass_user2[number_of_chars] = {'1','4','7','4','*'}; // const char pass_user3[number_of_chars] = {'0','0','0','0','0'}; // const char pass_user4[number_of_chars] = {'6','5','4','C','*'}; // const char pass_user5[number_of_chars] = {'A','A','A','A','A'}; // //choose the character length of valid passwords char enterd_pass[number_of_chars] = {' ',' ',' ',' ',' '}; //initialize outputs DigitalOut led_red(LED_RED); DigitalOut led_green(LED_GREEN); DigitalOut active_buzzer(PTA4); DigitalOut output1(PTA5); //Buzzer on pin PTD4 PwmOut beep(PTD4); // buzzer 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 j=0; int flag=0; printf("\n \n PASSWORD REQUIRED \n \n "); int released =1; output1=1; printf("\r\n Password Entered:"); led_green = 0; led_red = 0; active_buzzer = 0; //buzzer period select beep.period(0.001); wait(0.001); do{ while(1) { led_green = 0; led_red = 0; 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; printf("%c ",enterd_pass[i]); released = 0; //clear the flag to indicate that key is still pressed } else i--; } wait(0.003); // comparing password entered via keypad to valid user passwords ///////// user 1 /////////////// for(i=0; i<number_of_chars; i++) { if( enterd_pass[i] == pass_user1[i] ) { user_index1 = 1; active_buzzer = 0; } 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; } } ////// correct password prompts and outputs if( (1 == user_index1)||(2 == user_index2)||(3 == user_index3)||(4 == user_index4)||(5 == user_index5) ) { printf("\r\n Passcode recognized \n \n "); led_red = 1; active_buzzer = 0; printf("\r\n Welcome Cory Burke \n \n" ); output1=0; if(1 == user_index1) { printf("\r Access granted User 1 \n \n"); led_red = 1; active_buzzer = 0; printf("\r\n Welcome User 1 \n" ); printf("\r User numer: 1 \n"); output1=0; } if(2 == user_index2) { printf("\r\n Access granted: User 2 \n \n "); led_red = 1; active_buzzer = 0; printf("\r\n Welcome User 2 \n" ); printf("\r User numer: 2 \n"); output1=0; } if(3 == user_index3) { printf("\r\n Access granted: User 3 \n "); led_red = 1; active_buzzer = 0; printf("\r\n Welcome User 3 \n" ); printf("\r User numer: 3 \n "); output1=0; } if(4 == user_index4) { printf("\r\n Access granted: User 4 \n "); led_red = 1; active_buzzer = 0; printf("\r\n Welcome User 4 \n" ); printf("\r User numer: 4 \n"); output1=0; } if(5 == user_index5) { printf("\r Access granted: User 5 \n "); led_red = 1; active_buzzer = 0; printf("\r\n Welcome User 5 \n " ); printf("\r User numer: 5 \n"); output1=0; } wait(1); active_buzzer = 0; beep = 25.0/100.0; led_red = 0; led_green=0; output1=1; wait(1); } // indicates that an incorrect passwords was entered with leds and buzzer else { printf("\r\n \n Incorrect password \n \n Access denied! \n \n "); led_green = 1; led_red=0; wait(1); active_buzzer = 1; beep = 50.0/100.0; j=j+1; if(j==4){printf("\r\n \n TOO MANT ATTEMPTS, SYSTEM LOCKOUT \n \n "); led_green = 1; led_red=0; flag=1; wait(1); active_buzzer = 1; beep = 50.0/100.0; output1=1; wait(1); output1=0; wait(1); output1=1; wait(1); output1=0; wait(1); output1=1; wait(1); } } beep = 0.0/100.0; led_green = 0; led_red=0; } } while(flag==0); }