I have written an article about using RFID to control solenoid valve switch: Arduino notes (23): Radio frequency RFID control solenoid valve switch , another way to control access control is to use the keyboard to enter a password. If the password is correct, you can enter, but if you make a mistake, you can’t. Activate the solenoid valve switch, and today’s implementation will use a password as a control measure for access control.
There are two common digital membrane keyboards: 3×4 and 4×4, 4×4 has an extra row of English letters ABCD. The membrane keyboard is a matrix composed of rows and columns. Each key is assigned to a certain row and column (see figure below).

On a 4-row x 4-column button keyboard, the first key is to establish a connection between row 1 and column 1 (R1C1). 2 is R1C2, 3 is R1C3, 5 is R2C1...etc. The 4×4 key keyboard is divided into two groups, column and row, with a total of 8 pins, which can be connected to the Pin pins of Arduino. This implementation is connected to Pin 2 ~ Pin 9.
For the installation method of the library (Library), please refer to another article: Arduino Notes: Install the Arduino IDE library.
There are two common digital membrane keyboards: 3×4 and 4×4, 4×4 has an extra row of English letters ABCD. The membrane keyboard is a matrix composed of rows and columns. Each key is assigned to a certain row and column (see figure below).
On a 4-row x 4-column button keyboard, the first key is to establish a connection between row 1 and column 1 (R1C1). 2 is R1C2, 3 is R1C3, 5 is R2C1...etc. The 4×4 key keyboard is divided into two groups, column and row, with a total of 8 pins, which can be connected to the Pin pins of Arduino. This implementation is connected to Pin 2 ~ Pin 9.
[Install Keypad Library]
This implementation requires the following libraries to be installed:For the installation method of the library (Library), please refer to another article: Arduino Notes: Install the Arduino IDE library.
[Material]
- Arduino Uno x 1
- 4x4 Keypad x 1
- Relay x 1
- 1602 LCD display x 1
- LCD I2C adapter module x 1
- 1.5V battery x 4
- Battery holder x 1
- Breadboard x 1
- Connection line x N
[Wiring diagram]
[Code]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define Password_Length 9
int signalPin = 12;
char Data[Password_Length];
char Master[Password_Length] = "147*2580"; //password
byte data_count = 0, master_count = 0;
bool Pass_is_good;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
// define keyboard array
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// Pin corresponding to the keyboard row and column
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
lcd.init();
lcd.backlight();
pinMode(signalPin, OUTPUT);
}
void loop(){
lcd.setCursor(0,0);
lcd.print("Enter Password:");
// Get the key pressed
customKey = customKeypad.getKey();
if (customKey){
Data[data_count] = customKey;
lcd.setCursor(data_count,1);
lcd.print(Data[data_count]);
data_count++;
}
if(data_count == Password_Length-1){
lcd.clear();
if(!strcmp(Data, Master)){
lcd.print("Correct");
// Set to enable Relay
digitalWrite(signalPin, HIGH);
delay(5000);
digitalWrite(signalPin, LOW);
}
else{
lcd.print("Incorrect");
delay(1000);
}
lcd.clear();
clearData();
}
}
void clearData(){
while(data_count !=0){
Data[data_count--] = 0;
}
return;
}
[Result]
[Reference]
- Randomnerdtutorials:Arduino Membrane Keypad Tutorial
- Circuitbasics:How to set up a keypad on an Arduino
Tags:
Arduino
