#include <Arduino.h>
const int numRows = 4;
const int numCols = 4;
const int debounceTime = 20;
const char keymap[numRows][numCols] = {
{ '1', '2', '3' ,'A'},
{ '4', '5', '6','B' },
{ '7', '8', '9' ,'C'},
{ '*', '0', '#','D' }
};
const int rowPins[numRows] = {13, 12, 11, 10};
const int colPins[numCols] = {9, 8, 7,6};
const int greenLedPin = 4;
const int redLedPin = 5;
String correctPassword = "AB1234CD";
String inputPassword = "";
void setup() {
Serial.begin(9600);
for (int row = 0; row < numRows; row++) {
pinMode(rowPins[row], INPUT_PULLUP);
}
for (int column = 0; column < numCols; column++) {
pinMode(colPins[column], OUTPUT);
digitalWrite(colPins[column], HIGH);
}
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
digitalWrite(greenLedPin, LOW);
digitalWrite(redLedPin, LOW);
}
void loop() {
char key = getKey();
if (key == '#') {
if (inputPassword == correctPassword) {
digitalWrite(greenLedPin, HIGH);
delay(2000);
digitalWrite(greenLedPin, LOW);
} else {
digitalWrite(redLedPin, HIGH);
delay(2000);
digitalWrite(redLedPin, LOW);
}
inputPassword = "";
} else if (key != 0) {
Serial.print(key);
// اذا اردنا ان لا تظهر كلمه المرور
// Serial.print(key);اثناء الكتابه نحذف الكلمه اعلاه
inputPassword += key;
}
}
char getKey() {
char key = 0;
for (int column = 0; column < numCols; column++) {
digitalWrite(colPins[column], LOW);
for (int row = 0; row < numRows; row++) {
if (digitalRead(rowPins[row]) == LOW) {
delay(debounceTime);
while (digitalRead(rowPins[row]) == LOW);
key = keymap[row][column];
}
}
digitalWrite(colPins[column], HIGH);
}
return key;
}