#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
// إعداد الشاشة
LiquidCrystal_I2C lcd(0x27, 16, 2); // تأكد من عنوان I2C الخاص بالشاشة
// إعداد لوحة المفاتيح
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {10, A0, A1, A2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// متغيرات كلمة السر
String currentPassword = "1234"; // كلمة السر الافتراضية
String enteredPassword = "";
String newPassword = "";
int menuIndex = 0; // فهرس القائمة
const char* menuItems[] = {"Change Pass", "Option 2", "Option 3", "Exit"};
const int menuSize = sizeof(menuItems) / sizeof(menuItems[0]);
void setup() {
lcd.begin(16, 2);
lcd.backlight();
lcd.print("Enter Password:");
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == '#') {
if (enteredPassword == currentPassword) {
mainMenu(); // الانتقال إلى القائمة الرئيسية
} else {
lcd.clear();
lcd.print("Wrong Password");
delay(1000);
}
lcd.clear();
lcd.print("Enter Password:");
enteredPassword = ""; // إعادة تعيين الإدخال
} else {
enteredPassword += key; // إضافة الرقم إلى كلمة السر المدخلة
}
lcd.setCursor(0, 1);
lcd.print(enteredPassword); // عرض كلمة السر المدخلة
}
}
void mainMenu() {
while (true) {
lcd.clear();
lcd.print("> "); // علامة لتحديد الخيار المحدد
lcd.print(menuItems[menuIndex]); // عرض الخيار الحالي
delay(500); // تأخير بسيط للتمرير
// عرض الخيارات المتحركة
for (int i = 0; i < menuSize; i++) {
lcd.setCursor(0, 1);
lcd.print(menuItems[i]);
delay(1000); // تأخير لعرض كل خيار لمدة ثانية
lcd.clear();
}
char key = keypad.getKey();
if (key) {
if (key == '1') {
if (menuIndex == 0) {
changePassword(); // الانتقال لتغيير كلمة السر
}
} else if (key == '2') {
if (menuIndex == 3) {
lcd.clear();
lcd.print("Exiting...");
delay(1000);
return; // العودة إلى إدخال كلمة السر
}
}
// تغيير الفهرس عند الضغط على الأزرار
if (key == 'A') {
menuIndex = (menuIndex + 1) % menuSize; // الانتقال لأسفل
} else if (key == 'B') {
menuIndex = (menuIndex - 1 + menuSize) % menuSize; // الانتقال لأعلى
}
}
}
}
void changePassword() {
lcd.clear();
lcd.print("New Password:");
newPassword = ""; // إعادة تعيين كلمة السر الجديدة
while (true) {
char key = keypad.getKey();
if (key) {
if (key == '#') {
currentPassword = newPassword; // تغيير كلمة السر
lcd.clear();
lcd.print("Password Changed");
delay(1000);
return; // العودة إلى القائمة الرئيسية
} else {
newPassword += key; // إضافة الرقم إلى كلمة السر الجديدة
lcd.setCursor(0, 1);
lcd.print(newPassword); // عرض كلمة السر الجديدة
}
}
}
}