Project Hub
Keypad Password Lock
🔢

Keypad Password Lock

Type a 4-digit code to open a servo lock.

intermediate75 min

Components Needed

Arduino UNO
4×4 membrane keypad
OLED
16×2 I2C LCD
SG90 servo

Circuit Diagram & Wiring

Add your circuit diagram image here.

  1. Keypad rows → pins 2-5, columns → pins 6-9.
  2. LCD SDA → A4, SCL → A5.
  3. Servo → pin 10.

Arduino Sketch (.ino)

password-lock.ino
<span style="color:#f97583">#includespan> &lt;Keypad.h&gt;
<span style="color:#f97583">#includespan> &lt;Wire.h&gt;
<span style="color:#f97583">#includespan> &lt;LiquidCrystal_I2C.h&gt;
<span style="color:#f97583">#includespan> &lt;Servo.h&gt;

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>">&quot;<span style="color:#79b8ff">1234span>&quot;span>, entry = <span style="color:<span style="color:#f97583">#9ecbffspan>">&quot;&quot;span>;

void setup() {
  lcd.init(); lcd.backlight();
  lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">&quot;Enter code:&quot;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>">&quot;Open!&quot;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>">&quot;Wrong&quot;span>);
      delay(<span style="color:#79b8ff">1500span>);
    }
    entry = <span style="color:<span style="color:#f97583">#9ecbffspan>">&quot;&quot;span>;
    lcd.clear(); lcd.print(<span style="color:<span style="color:#f97583">#9ecbffspan>">&quot;Enter code:&quot;span>);
  } else {
    entry += k;
    lcd.setCursor(<span style="color:#79b8ff">0span>, <span style="color:#79b8ff">1span>); lcd.print(entry);
  }
}