يتم تنفيذ هذه الدالة بواسطة التعليمات البرمجية الآتية: - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: يتم تنفيذ هذه الدالة بواسطة التعليمات البرمجية الآتية:

📚 معلومات الصفحة

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 البرمجة: تنفيذ فتح وغلق القفل الذكي

المفاهيم الأساسية

شرط التحقق من كلمة المرور (`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)` للتحكم في زاوية دوران محرك السيرفو.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

نوع: محتوى تعليمي

والآن نصل إلى الجزء المهم من البرنامج وهو عملية فتح الباب (تدوير محرك سيرفو) إذا كانت كلمة المرور المكتوبة صحيحة، وغلق القفل مرة أخرى بعد فترة من الوقت، أو عرض رسالة تفيد بأن كلمة المرور كانت خطأ.

يتم تنفيذ هذه الدالة بواسطة التعليمات البرمجية الآتية:

نوع: محتوى تعليمي

// this code will be executed if the password is correct if(correctPass){ // clear the lcd screen lcd.clear(); // set the cursor to the beginning of the 1st line lcd.setCursor(0, 0); lcd.print("Correct password!"); // set the cursor to the beginning of the 2nd line lcd.setCursor(0, 1); lcd.print("Unlocking..."); // write the angle by which the servo will rotate servo.write(180); // wait 5 sec and then rotate the servo to its original angle delay(5000); servo.write(0); } else { // this code will be executed if the password is wrong // clear the lcd screen lcd.clear(); // set the cursor at the 1st col,row lcd.setCursor(0, 0); // print the message lcd.print("Wrong password!"); }

نوع: NON_EDUCATIONAL

253 وزارة التعليم Ministry of Education 2025 - 1447

📄 النص الكامل للصفحة

والآن نصل إلى الجزء المهم من البرنامج وهو عملية فتح الباب (تدوير محرك سيرفو) إذا كانت كلمة المرور المكتوبة صحيحة، وغلق القفل مرة أخرى بعد فترة من الوقت، أو عرض رسالة تفيد بأن كلمة المرور كانت خطأ. --- SECTION: يتم تنفيذ هذه الدالة بواسطة التعليمات البرمجية الآتية: --- // this code will be executed if the password is correct if(correctPass){ // clear the lcd screen lcd.clear(); // set the cursor to the beginning of the 1st line lcd.setCursor(0, 0); lcd.print("Correct password!"); // set the cursor to the beginning of the 2nd line lcd.setCursor(0, 1); lcd.print("Unlocking..."); // write the angle by which the servo will rotate servo.write(180); // wait 5 sec and then rotate the servo to its original angle delay(5000); servo.write(0); } else { // this code will be executed if the password is wrong // clear the lcd screen lcd.clear(); // set the cursor at the 1st col,row lcd.setCursor(0, 0); // print the message lcd.print("Wrong password!"); } 253 وزارة التعليم Ministry of Education 2025 - 1447

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 3 بطاقة لهذه الصفحة

في الكود البرمجي الموضح، ما الغرض من استخدام الأمر `delay(5000);` بعد فتح القفل؟

  • أ) لإعطاء المستخدم وقتاً لكتابة كلمة مرور جديدة.
  • ب) لانتظار 5 ثوانٍ قبل إعادة غلق القفل تلقائياً.
  • ج) لإعادة تشغيل لوحة Arduino.
  • د) لتنظيف ذاكرة شاشة LCD.

الإجابة الصحيحة: b

الإجابة: لانتظار 5 ثوانٍ قبل إعادة غلق القفل تلقائياً.

الشرح: 1. الأمر `delay()` يوقف تنفيذ البرنامج لفترة زمنية محددة. 2. القيمة 5000 تعني 5000 مللي ثانية، أي 5 ثوانٍ. 3. بعد هذه الفترة، ينفذ الأمر `servo.write(0);` لإعادة القفل إلى وضعه المغلق.

تلميح: ما الذي يحدث مباشرة بعد هذا الأمر في الكود؟

التصنيف: مفهوم جوهري | المستوى: متوسط

في برنامج قفل إلكتروني باستخدام Arduino، ما الذي يحدث عند تنفيذ الأمر `servo.write(180);`؟

  • أ) يوقف محرك السيرفو عن العمل.
  • ب) يدور محرك السيرفو إلى زاوية 180 درجة لفتح القفل.
  • ج) يعرض رسالة خطأ على شاشة LCD.
  • د) يقرأ قيمة من حساس الحركة.

الإجابة الصحيحة: b

الإجابة: يدور محرك السيرفو إلى زاوية 180 درجة لفتح القفل.

الشرح: 1. الأمر `servo.write(angle)` يتحكم في زاوية دوران محرك السيرفو. 2. عند تمرير القيمة 180، يدور المحرك إلى الزاوية القصوى (180 درجة). 3. في سياق قفل الباب، هذا الدوران يمثل فتح القفل.

تلميح: فكر في وظيفة محرك السيرفو في نظام الأمان.

التصنيف: مفهوم جوهري | المستوى: سهل

ما هو التسلسل المنطقي للأحداث في الكود البرمجي عند إدخال كلمة مرور صحيحة؟

  • أ) تدوير السيرفو → الانتظار → عرض رسالة نجاح → إغلاق القفل.
  • ب) عرض رسالة خطأ → إغلاق القفل → الانتظار → فتح القفل.
  • ج) عرض رسالة نجاح → تدوير السيرفو لفتح القفل → الانتظار 5 ثوانٍ → إعادة السيرفو لإغلاق القفل.
  • د) الانتظار 5 ثوانٍ → فتح القفل → عرض رسالة → إغلاق القفل.

الإجابة الصحيحة: c

الإجابة: عرض رسالة نجاح → تدوير السيرفو لفتح القفل → الانتظار 5 ثوانٍ → إعادة السيرفو لإغلاق القفل.

الشرح: 1. أولاً: مسح الشاشة وعرض "Correct password!" و"Unlocking...". 2. ثانياً: تنفيذ `servo.write(180);` لفتح القفل. 3. ثالثاً: تنفيذ `delay(5000);` للانتظار. 4. رابعاً: تنفيذ `servo.write(0);` لإغلاق القفل.

تلميح: ركز على تسلسل الأوامر داخل الكتلة البرمجية `if(correctPass){...}`.

التصنيف: خطوات | المستوى: متوسط