📚 البرمجة: تنفيذ فتح وغلق القفل الذكي
المفاهيم الأساسية
شرط التحقق من كلمة المرور (`if(correctPass)`) : هيكل برمجي يحدد مسار التنفيذ بناءً على صحة أو خطأ كلمة المرور المدخلة.
خريطة المفاهيم
```markmap
تمارين برمجة C++ لإنترنت الأشياء
المشروع: إنشاء قفل باب ذكي
البرمجة
#### دالة loop()
##### التحقق من كلمة المرور
###### آلية المقارنة
- مقارنة كل مفتاح مضغوط مع الرقم المقابل في مصفوفة `password` بالتتابع.
- مثال: كلمة مرور مضبوطة "5456" وكلمة مدخلة "5453".
- 5 مقارنة مع 5 (صحيحة)
- 4 مقارنة مع 4 (صحيحة)
- 5 مقارنة مع 5 (صحيحة)
- 3 مقارنة مع 6 (خاطئة) ← كلمة المرور بأكملها خاطئة.
###### استخدام متغير منطقي (Boolean)
- `bool correctPass = true;`: يتم تهيئته على `true`.
- عند اكتشاف أي مفتاح خاطئ، تتغير قيمته إلى `false`.
- بعد انتهاء المقارنة، تشير القيمة `true` إلى صحة المرور، و`false` إلى خطئه.
###### تنفيذ الدالة (مثال كود)
- `for (int i = 0; i < 4; i++) {`
- `buttonPressed = keypad.waitKeyFor();`
- `if(password[i] != buttonPressed){ correctPass = false; }`
- `lcd.setCursor(i, 1);`
- `lcd.print(buttonPressed);`
##### تنفيذ فتح/غلق القفل
###### إذا كانت كلمة المرور صحيحة
- مسح شاشة LCD.
- طباعة رسالة "Correct password!" و "Unlocking...".
- تدوير محرك السيرفو إلى زاوية 180 درجة لفتح القفل.
- الانتظار لمدة 5 ثوانٍ.
- إعادة تدوير محرك السيرفو إلى زاوية 0 درجة لإغلاق القفل.
###### إذا كانت كلمة المرور خاطئة
- مسح شاشة LCD.
- طباعة رسالة "Wrong password!".
```
نقاط مهمة
- الجزء الرئيسي من البرنامج هو فتح الباب (بتدوير محرك سيرفو) عند إدخال كلمة مرور صحيحة، وإغلاقه تلقائياً بعد فترة زمنية.
- في حالة الخطأ، يعرض النظام رسالة "Wrong password!" على الشاشة دون أي حركة للمحرك.
- يتم استخدام الدالة `servo.write(angle)` للتحكم في زاوية دوران محرك السيرفو.