kl25z secure keypad 4x4 keypad with multiple passwords,users, and outputs. (buzzer)

Dependencies:   mbed TextLCD Keypad

Committer:
habusaq
Date:
Thu Apr 26 18:44:07 2018 +0000
Revision:
1:5461144fd540
Parent:
0:93cb8707aa8c
Child:
2:30db7d0108c1
KEYPAD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
habusaq 0:93cb8707aa8c 1 #include "mbed.h"
habusaq 0:93cb8707aa8c 2 #include "Keypad.h"
habusaq 0:93cb8707aa8c 3 #include "TextLCD.h"
habusaq 0:93cb8707aa8c 4 Keypad kpad(PTC8, PTC1, PTB19, PTB18, PTC5, PTC7, PTC0, PTC9);
habusaq 0:93cb8707aa8c 5 Serial pc(USBTX, USBRX);
habusaq 0:93cb8707aa8c 6 TextLCD lcd(PTA1, PTB23, PTA2, PTC2, PTC3, PTC12, TextLCD::LCD16x2);
habusaq 0:93cb8707aa8c 7 /*
habusaq 0:93cb8707aa8c 8 col1, col2, col3, col4,
habusaq 0:93cb8707aa8c 9 row1, row2, row3, row4
habusaq 0:93cb8707aa8c 10 */
habusaq 0:93cb8707aa8c 11
habusaq 0:93cb8707aa8c 12 const int number_of_chars = 4;
habusaq 0:93cb8707aa8c 13 const char pass_user1[number_of_chars] = {'1','2','3','A'}; //HA
habusaq 0:93cb8707aa8c 14 const char pass_user2[number_of_chars] = {'2','2','3','A'}; //FA
habusaq 0:93cb8707aa8c 15 const char pass_user3[number_of_chars] = {'5','2','3','A'}; //AA
habusaq 0:93cb8707aa8c 16 const char pass_user4[number_of_chars] = {'6','2','3','A'}; //MA
habusaq 0:93cb8707aa8c 17 const char pass_user5[number_of_chars] = {'7','2','3','A'}; //FF
habusaq 0:93cb8707aa8c 18
habusaq 0:93cb8707aa8c 19 char enterd_pass[number_of_chars] = {' ', ' ',' ',' '};
habusaq 0:93cb8707aa8c 20
habusaq 0:93cb8707aa8c 21 DigitalOut led_red(LED_RED);
habusaq 0:93cb8707aa8c 22 DigitalOut led_green(LED_GREEN);
habusaq 0:93cb8707aa8c 23 DigitalOut active_buzzer(PTC4); //Buzzer on pin PTC4=D9
habusaq 0:93cb8707aa8c 24
habusaq 1:5461144fd540 25 PwmOut beep(PTC4); // buzzer
habusaq 0:93cb8707aa8c 26
habusaq 0:93cb8707aa8c 27 //Serial pc(USBTX, USBRX);
habusaq 0:93cb8707aa8c 28
habusaq 0:93cb8707aa8c 29 int main()
habusaq 0:93cb8707aa8c 30 {
habusaq 0:93cb8707aa8c 31 char key;
habusaq 0:93cb8707aa8c 32 int i;
habusaq 0:93cb8707aa8c 33 int user_index1=0;
habusaq 0:93cb8707aa8c 34 int user_index2=0;
habusaq 0:93cb8707aa8c 35 int user_index3=0;
habusaq 0:93cb8707aa8c 36 int user_index4=0;
habusaq 0:93cb8707aa8c 37 int user_index5=0;
habusaq 0:93cb8707aa8c 38
habusaq 0:93cb8707aa8c 39 int released =1;;
habusaq 0:93cb8707aa8c 40
habusaq 0:93cb8707aa8c 41
habusaq 0:93cb8707aa8c 42 led_green = 0;
habusaq 0:93cb8707aa8c 43 led_red = 0;
habusaq 0:93cb8707aa8c 44 active_buzzer = 0;
habusaq 0:93cb8707aa8c 45
habusaq 1:5461144fd540 46 beep.period(0.001);
habusaq 0:93cb8707aa8c 47
habusaq 0:93cb8707aa8c 48 lcd.cls();
habusaq 0:93cb8707aa8c 49 wait(0.001);
habusaq 0:93cb8707aa8c 50
habusaq 0:93cb8707aa8c 51
habusaq 0:93cb8707aa8c 52
habusaq 0:93cb8707aa8c 53 while(true) {
habusaq 0:93cb8707aa8c 54
habusaq 0:93cb8707aa8c 55 lcd.locate(0,0); // col, row
habusaq 0:93cb8707aa8c 56 lcd.printf("Enter Password:");
habusaq 0:93cb8707aa8c 57
habusaq 0:93cb8707aa8c 58 // Reading the password characters
habusaq 0:93cb8707aa8c 59 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 60 key = kpad.ReadKey();
habusaq 0:93cb8707aa8c 61
habusaq 0:93cb8707aa8c 62 if(key == '\0')
habusaq 0:93cb8707aa8c 63 released = 1; //set the flag when all keys are released
habusaq 0:93cb8707aa8c 64 if((key != '\0') && (released == 1)) { //if a key is pressed AND previous key was released
habusaq 0:93cb8707aa8c 65 enterd_pass[i]=key;
habusaq 0:93cb8707aa8c 66 lcd.locate(i,1); // col, row
habusaq 0:93cb8707aa8c 67 lcd.printf("*");
habusaq 0:93cb8707aa8c 68
habusaq 0:93cb8707aa8c 69 released = 0; //clear the flag to indicate that key is still pressed
habusaq 0:93cb8707aa8c 70 }
habusaq 0:93cb8707aa8c 71 else
habusaq 0:93cb8707aa8c 72 i--;
habusaq 0:93cb8707aa8c 73
habusaq 0:93cb8707aa8c 74
habusaq 0:93cb8707aa8c 75
habusaq 0:93cb8707aa8c 76 }
habusaq 0:93cb8707aa8c 77
habusaq 0:93cb8707aa8c 78 wait(0.5);
habusaq 0:93cb8707aa8c 79
habusaq 0:93cb8707aa8c 80 lcd.locate(0,1); // col, row
habusaq 0:93cb8707aa8c 81 lcd.printf(" " );
habusaq 0:93cb8707aa8c 82
habusaq 0:93cb8707aa8c 83 // comparing passwords
habusaq 0:93cb8707aa8c 84
habusaq 0:93cb8707aa8c 85 ///////// user 1 ///////////////
habusaq 0:93cb8707aa8c 86 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 87 if( enterd_pass[i] == pass_user1[i] ) {
habusaq 0:93cb8707aa8c 88 user_index1 = 1;
habusaq 0:93cb8707aa8c 89 } else {
habusaq 0:93cb8707aa8c 90 user_index1 = 0;
habusaq 0:93cb8707aa8c 91 break;
habusaq 0:93cb8707aa8c 92 }
habusaq 0:93cb8707aa8c 93 }
habusaq 0:93cb8707aa8c 94
habusaq 0:93cb8707aa8c 95
habusaq 0:93cb8707aa8c 96
habusaq 0:93cb8707aa8c 97 ///////// user 2 ///////////////
habusaq 0:93cb8707aa8c 98 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 99 if( enterd_pass[i] == pass_user2[i] ) {
habusaq 0:93cb8707aa8c 100 user_index2 = 2;
habusaq 0:93cb8707aa8c 101 } else {
habusaq 0:93cb8707aa8c 102 user_index2 = 0;
habusaq 0:93cb8707aa8c 103 break;
habusaq 0:93cb8707aa8c 104 }
habusaq 0:93cb8707aa8c 105 }
habusaq 0:93cb8707aa8c 106 ///////// user 3 ///////////////
habusaq 0:93cb8707aa8c 107 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 108 if( enterd_pass[i] == pass_user3[i] ) {
habusaq 0:93cb8707aa8c 109 user_index3 = 3;
habusaq 0:93cb8707aa8c 110 } else {
habusaq 0:93cb8707aa8c 111 user_index3 = 0;
habusaq 0:93cb8707aa8c 112 break;
habusaq 0:93cb8707aa8c 113 }
habusaq 0:93cb8707aa8c 114 }
habusaq 0:93cb8707aa8c 115 ///////// user 4 ///////////////
habusaq 0:93cb8707aa8c 116 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 117 if( enterd_pass[i] == pass_user4[i] ) {
habusaq 0:93cb8707aa8c 118 user_index4 = 4;
habusaq 0:93cb8707aa8c 119 } else {
habusaq 0:93cb8707aa8c 120 user_index4 = 0;
habusaq 0:93cb8707aa8c 121 break;
habusaq 0:93cb8707aa8c 122 }
habusaq 0:93cb8707aa8c 123 }
habusaq 0:93cb8707aa8c 124 ///////// user 5 ///////////////
habusaq 0:93cb8707aa8c 125 for(i=0; i<number_of_chars; i++) {
habusaq 0:93cb8707aa8c 126 if( enterd_pass[i] == pass_user5[i] ) {
habusaq 0:93cb8707aa8c 127 user_index5 = 5;
habusaq 0:93cb8707aa8c 128 } else {
habusaq 0:93cb8707aa8c 129 user_index5 = 0;
habusaq 0:93cb8707aa8c 130 break;
habusaq 0:93cb8707aa8c 131 }
habusaq 0:93cb8707aa8c 132 }
habusaq 0:93cb8707aa8c 133 //////////////////////////////////////////////////
habusaq 0:93cb8707aa8c 134 if( (1 == user_index1)||(2 == user_index2)||(3 == user_index3)||(4 == user_index4)||(5 == user_index5) ) {
habusaq 0:93cb8707aa8c 135 pc.printf("Access granted ");
habusaq 0:93cb8707aa8c 136 led_red = 1;
habusaq 0:93cb8707aa8c 137 active_buzzer = 1;
habusaq 0:93cb8707aa8c 138 lcd.locate(0,1); // col, row
habusaq 0:93cb8707aa8c 139 lcd.printf("User: ");
habusaq 0:93cb8707aa8c 140
habusaq 0:93cb8707aa8c 141 if(1 == user_index1) {
habusaq 0:93cb8707aa8c 142 lcd.locate(6,1); // col, row
habusaq 0:93cb8707aa8c 143 lcd.printf("HA");
habusaq 0:93cb8707aa8c 144 }
habusaq 0:93cb8707aa8c 145 if(2 == user_index2) {
habusaq 0:93cb8707aa8c 146 lcd.locate(6,1); // col, row
habusaq 0:93cb8707aa8c 147 lcd.printf("FA");
habusaq 0:93cb8707aa8c 148 }
habusaq 0:93cb8707aa8c 149 if(3 == user_index3) {
habusaq 0:93cb8707aa8c 150 lcd.locate(6,1); // col, row
habusaq 0:93cb8707aa8c 151 lcd.printf("AA");
habusaq 0:93cb8707aa8c 152 }
habusaq 0:93cb8707aa8c 153 if(4 == user_index4) {
habusaq 0:93cb8707aa8c 154 lcd.locate(6,1); // col, row
habusaq 0:93cb8707aa8c 155 lcd.printf("MA");
habusaq 0:93cb8707aa8c 156 }
habusaq 0:93cb8707aa8c 157 if(5 == user_index5) {
habusaq 0:93cb8707aa8c 158 lcd.locate(6,1); // col, row
habusaq 0:93cb8707aa8c 159 lcd.printf("FF");
habusaq 0:93cb8707aa8c 160 }
habusaq 0:93cb8707aa8c 161
habusaq 0:93cb8707aa8c 162 wait(1);
habusaq 1:5461144fd540 163 active_buzzer = 1;
habusaq 1:5461144fd540 164 beep = 80.3/100.0;
habusaq 0:93cb8707aa8c 165 led_red = 0;
habusaq 0:93cb8707aa8c 166 wait(1);
habusaq 0:93cb8707aa8c 167 lcd.cls();
habusaq 0:93cb8707aa8c 168
habusaq 0:93cb8707aa8c 169
habusaq 0:93cb8707aa8c 170 }
habusaq 0:93cb8707aa8c 171
habusaq 0:93cb8707aa8c 172 else {
habusaq 0:93cb8707aa8c 173 lcd.locate(0,0); // col, row
habusaq 0:93cb8707aa8c 174 lcd.printf("Access denied ");
habusaq 0:93cb8707aa8c 175 led_green = 1;
habusaq 0:93cb8707aa8c 176 wait(1);
habusaq 0:93cb8707aa8c 177 led_green = 0;
habusaq 1:5461144fd540 178 active_buzzer = 0;
habusaq 1:5461144fd540 179 beep = 0.0/100.0;
habusaq 0:93cb8707aa8c 180 }
habusaq 1:5461144fd540 181
habusaq 1:5461144fd540 182 beep = 0.0/100.0;
habusaq 0:93cb8707aa8c 183
habusaq 0:93cb8707aa8c 184 }
habusaq 0:93cb8707aa8c 185 }
habusaq 0:93cb8707aa8c 186