Project Hub

🔢
Keypad Password Lock
Type a 4-digit code to open a servo lock.
intermediate75 min
Components Needed
Arduino UNO
4×4 membrane keypad
16×2 I2C LCD
SG90 servo
Circuit Diagram & Wiring
Add your circuit diagram image here.
- Keypad rows → pins 2-5, columns → pins 6-9.
- LCD SDA → A4, SCL → A5.
- Servo → pin 10.
Arduino Sketch (.ino)
password-lock.ino
<span style="color:#f97583">#includespan> <Keypad.h>
<span style="color:#f97583">#includespan> <Wire.h>
<span style="color:#f97583">#includespan> <LiquidCrystal_I2C.h>
<span style="color:#f97583">#includespan> <Servo.h>
const byte ROWS = <span style="color:#79b8ff">4span>, COLS = <span style="color:#79b8ff">4span>;
char keys[ROWS][COLS] = {
{&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">1span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">2span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">3span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;A&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;},
{&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">4span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">5span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">6span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;B&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;},
{&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">7span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">8span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">9span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;C&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;},
{&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;*&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;<span style="color:#79b8ff">0span>&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;#&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;,&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;D&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;}
};
byte rowPins[ROWS] = {<span style="color:#79b8ff">2span>,<span style="color:#79b8ff">3span>,<span style="color:#79b8ff">4span>,<span style="color:#79b8ff">5span>};
byte colPins[COLS] = {<span style="color:#79b8ff">6span>,<span style="color:#79b8ff">7span>,<span style="color:#79b8ff">8span>,<span style="color:#79b8ff">9span>};
Keypad pad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, <span style="color:#79b8ff">16span>, <span style="color:#79b8ff">2span>);
Servo lock;
String PASS = <span style="color:<span style="color:#f97583">#9ecbffspan>">"<span style="color:#79b8ff">1234span>"span>, entry = <span style="color:<span style="color:#f97583">#9ecbffspan>">""span>;
void setup() {
lcd.init(); lcd.backlight();
lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">"Enter code:"span>);
lock.attach(<span style="color:#79b8ff">10span>); lock.write(<span style="color:#79b8ff">0span>);
}
void loop() {
char k = pad.getKey();
if (!k) return;
if (k == &<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;#&<span style="color:#f97583">#<span style="color:#79b8ff">39span>span>;) {
if (entry == PASS) {
lcd.clear(); lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">"Open!"span>);
lock.write(<span style="color:#79b8ff">90span>); delay(<span style="color:#79b8ff">3000span>); lock.write(<span style="color:#79b8ff">0span>);
} else {
lcd.clear(); lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">"Wrong"span>);
delay(<span style="color:#79b8ff">1500span>);
}
entry = <span style="color:<span style="color:#f97583">#9ecbffspan>">""span>;
lcd.clear(); lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">"Enter code:"span>);
} else {
entry += k;
lcd.setCursor(<span style="color:#79b8ff">0span>, <span style="color:#79b8ff">1span>); lcd.print(entry);
}
}