Keypad Entry Lock With LEDs
Enter the keypad PIN specified in the code, to activate the green LED. Red LED activates when incorrect code is entered.
Components and supplies
1
Arduino UNO
1
5 mm LED: Yellow
1
5 mm LED: Red
1
Male/Male Jumper Wires
1
USB-A to B Cable
1
Membrane Switch Keypad
3
Resistor 220 ohm
1
5 mm LED: Green
Apps and platforms
1
Arduino IDE
Project description
Code
KeypadCode.ino
c_cpp
Keypad Entry Lock C++ Code
1/* Passcode keypad input program 2 * Functionality: 3 * Power on and ready, light white led on 4 * Correct code button press, light green led for 250 ms 5 * Incorrect code button press, light red led for 500 ms and reset code sequence 6 * Full correct code entry, light green light for 2000 ms and reset code sequence 7 */ 8#include <Keypad.h> 9 10//Define Pins (Variables) 11#define GREEN 10 12#define WHITE 11 13#define RED 12 14 15//Define Passcode Variables 16#define pCode1 '3' 17#define pCode2 '7' 18#define pCode3 '0' 19#define pCode4 '2' 20//bool bCodeFail = true; 21bool bCodeFail1 = true; 22bool bCodeFail2 = true; 23bool bCodeFail3 = true; 24bool bCodeFail4 = true; 25 26//Setup keypad pins and outputs 27const byte ROWS = 4; //four rows 28const byte COLS = 4; //four columns 29//define the cymbols on the buttons of the keypads 30char hexaKeys[ROWS][COLS] = { 31 {'1','2','3','A'}, 32 {'4','5','6','B'}, 33 {'7','8','9','C'}, 34 {'*','0','#','D'} 35}; 36byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad 37byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad 38 39//initialize an instance of class NewKeypad 40Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 41 42 43void setup() { 44 // put your setup code here, to run once: 45pinMode(GREEN, OUTPUT); 46pinMode(WHITE, OUTPUT); 47digitalWrite(WHITE, HIGH); 48pinMode(RED, OUTPUT); 49Serial.begin(9600); 50//bCodeFail = false; 51} 52 53void loop() { 54 // put your main code here, to run repeatedly: 55//TEST LEDS 56//digitalWrite(GREEN, HIGH); 57//digitalWrite(WHITE, HIGH); 58//digitalWrite(RED, HIGH); 59//delay(500); 60//digitalWrite(GREEN, LOW); 61//digitalWrite(WHITE, LOW); 62//digitalWrite(RED, LOW); 63//delay(500); 64 65//TEST KEYPAD 66//char customKey = customKeypad.getKey(); 67 68// if (customKey) 69// { 70// Serial.println(customKey); 71// if (customKey == '1') 72// { 73// digitalWrite(GREEN, HIGH); 74// delay(250); 75// digitalWrite(GREEN, LOW); 76// } 77// if (customKey == '2' || customKey == '3')//,'4','5','6','7','8','9','0') 78// { 79// digitalWrite(RED, HIGH); 80// delay(500); 81// digitalWrite(RED, LOW); 82// } 83// } 84 char kPress = customKeypad.getKey(); 85 if (kPress) 86 { 87 Serial.println(kPress); 88 if (kPress == pCode1 && bCodeFail1 == true) 89 { 90 digitalWrite(GREEN, HIGH); 91 delay(250); 92 digitalWrite(GREEN, LOW); 93 bCodeFail1 = false; 94 } 95 else 96 { 97 if (kPress == pCode2 && bCodeFail2 == true && bCodeFail1 == false) 98 { 99 digitalWrite(GREEN, HIGH); 100 delay(250); 101 digitalWrite(GREEN, LOW); 102 bCodeFail2 = false; 103 } 104 else 105 { 106 if (kPress == pCode3 && bCodeFail3 == true && bCodeFail1 == false && bCodeFail2 == false) 107 { 108 digitalWrite(GREEN, HIGH); 109 delay(250); 110 digitalWrite(GREEN, LOW); 111 bCodeFail3 = false; 112 } 113 else 114 { 115 if (kPress == pCode4 && bCodeFail4 == true & bCodeFail1 == false && bCodeFail2 == false && bCodeFail3 == false) 116 { 117 digitalWrite(GREEN, HIGH); 118 delay(3000); 119 digitalWrite(GREEN, LOW); 120 bCodeFail1 = true; 121 bCodeFail2 = true; 122 bCodeFail3 = true; 123 bCodeFail4 = true; 124 } 125 else 126 { 127 digitalWrite(RED, HIGH); 128 delay(500); 129 digitalWrite(RED, LOW); 130 bCodeFail1 = true; 131 bCodeFail2 = true; 132 bCodeFail3 = true; 133 bCodeFail4 = true; 134 } 135 } 136 } 137 } 138 //Serial.println(bCodeFail); 139 } 140 141 142 143 144 145 146} 147
KeypadCode.ino
c_cpp
Keypad Entry Lock C++ Code
1/* Passcode keypad input program 2 * Functionality: 3 * Power on and 4 ready, light white led on 5 * Correct code button press, light green led for 250 6 ms 7 * Incorrect code button press, light red led for 500 ms and reset code sequence 8 9 * Full correct code entry, light green light for 2000 ms and reset code sequence 10 11 */ 12#include <Keypad.h> 13 14//Define Pins (Variables) 15#define GREEN 10 16#define 17 WHITE 11 18#define RED 12 19 20//Define Passcode Variables 21#define pCode1 22 '3' 23#define pCode2 '7' 24#define pCode3 '0' 25#define pCode4 '2' 26//bool 27 bCodeFail = true; 28bool bCodeFail1 = true; 29bool bCodeFail2 = true; 30bool 31 bCodeFail3 = true; 32bool bCodeFail4 = true; 33 34//Setup keypad pins and outputs 35const 36 byte ROWS = 4; //four rows 37const byte COLS = 4; //four columns 38//define the 39 cymbols on the buttons of the keypads 40char hexaKeys[ROWS][COLS] = { 41 {'1','2','3','A'}, 42 43 {'4','5','6','B'}, 44 {'7','8','9','C'}, 45 {'*','0','#','D'} 46}; 47byte 48 rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad 49byte 50 colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad 51 52//initialize 53 an instance of class NewKeypad 54Keypad customKeypad = Keypad( makeKeymap(hexaKeys), 55 rowPins, colPins, ROWS, COLS); 56 57 58void setup() { 59 // put your setup 60 code here, to run once: 61pinMode(GREEN, OUTPUT); 62pinMode(WHITE, OUTPUT); 63digitalWrite(WHITE, 64 HIGH); 65pinMode(RED, OUTPUT); 66Serial.begin(9600); 67//bCodeFail = false; 68} 69 70void 71 loop() { 72 // put your main code here, to run repeatedly: 73//TEST LEDS 74//digitalWrite(GREEN, 75 HIGH); 76//digitalWrite(WHITE, HIGH); 77//digitalWrite(RED, HIGH); 78//delay(500); 79//digitalWrite(GREEN, 80 LOW); 81//digitalWrite(WHITE, LOW); 82//digitalWrite(RED, LOW); 83//delay(500); 84 85//TEST 86 KEYPAD 87//char customKey = customKeypad.getKey(); 88 89// if (customKey) 90// 91 { 92// Serial.println(customKey); 93// if (customKey == '1') 94// { 95// 96 digitalWrite(GREEN, HIGH); 97// delay(250); 98// digitalWrite(GREEN, 99 LOW); 100// } 101// if (customKey == '2' || customKey == '3')//,'4','5','6','7','8','9','0') 102// 103 { 104// digitalWrite(RED, HIGH); 105// delay(500); 106// digitalWrite(RED, 107 LOW); 108// } 109// } 110 char kPress = customKeypad.getKey(); 111 if (kPress) 112 113 { 114 Serial.println(kPress); 115 if (kPress == pCode1 && bCodeFail1 == 116 true) 117 { 118 digitalWrite(GREEN, HIGH); 119 delay(250); 120 digitalWrite(GREEN, 121 LOW); 122 bCodeFail1 = false; 123 } 124 else 125 { 126 if (kPress 127 == pCode2 && bCodeFail2 == true && bCodeFail1 == false) 128 { 129 digitalWrite(GREEN, 130 HIGH); 131 delay(250); 132 digitalWrite(GREEN, LOW); 133 bCodeFail2 134 = false; 135 } 136 else 137 { 138 if (kPress == pCode3 && 139 bCodeFail3 == true && bCodeFail1 == false && bCodeFail2 == false) 140 { 141 142 digitalWrite(GREEN, HIGH); 143 delay(250); 144 digitalWrite(GREEN, 145 LOW); 146 bCodeFail3 = false; 147 } 148 else 149 { 150 151 if (kPress == pCode4 && bCodeFail4 == true & bCodeFail1 == false && bCodeFail2 152 == false && bCodeFail3 == false) 153 { 154 digitalWrite(GREEN, 155 HIGH); 156 delay(3000); 157 digitalWrite(GREEN, LOW); 158 159 bCodeFail1 = true; 160 bCodeFail2 = true; 161 bCodeFail3 162 = true; 163 bCodeFail4 = true; 164 } 165 else 166 167 { 168 digitalWrite(RED, HIGH); 169 delay(500); 170 171 digitalWrite(RED, LOW); 172 bCodeFail1 = true; 173 bCodeFail2 174 = true; 175 bCodeFail3 = true; 176 bCodeFail4 = true; 177 178 } 179 } 180 } 181 } 182 //Serial.println(bCodeFail); 183 184 } 185 186 187 188 189 190 191} 192
Downloadable files
Keypad Hookup + Design
Keypad + LEDs will need to be adjusted to work properly with the ARDUINO, some pins may need to be changed.
Keypad Hookup + Design

Comments
Only logged in users can leave comments