أوامر دالة ( ) loop هي: - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

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

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

الدرس: أوامر دالة ( ) loop هي:

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

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

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

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

📝 ملخص الصفحة

📚 أوامر دالة loop في مشروع القفل الذكي

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

دالة `loop()`: الدالة الرئيسية التي يتم تنفيذ أوامرها بشكل متكرر في مشروع القفل الذكي.

خريطة المفاهيم

```markmap

تمارين برمجة C++ لإنترنت الأشياء

المشروع: إنشاء قفل باب ذكي

المكونات المستخدمة

  • لوحة أردوينو أونو R3 (Arduino Uno R3)
  • لوحة مفاتيح (مقياس 4x4)
#### توصيل لوحة المفاتيح

##### خطوات التوصيل

  • توصيل صفوف لوحة المفاتيح
###### الصف الأول: الطرف الرقمي 9

###### الصف الثاني: الطرف الرقمي 8

###### الصف الثالث: الطرف الرقمي 7

###### الصف الرابع: الطرف الرقمي 6

  • توصيل أعمدة لوحة المفاتيح
###### العمود الأول: الطرف الرقمي 5

###### العمود الثاني: الطرف الرقمي 4

###### العمود الثالث: الطرف الرقمي 3

###### العمود الرابع: الطرف الرقمي 2

##### ملاحظة

  • تغيير لون جميع أسلاك التوصيل إلى الأخضر (green)
  • شاشة LCD مقاس 16x2 (I2C)
#### توصيل شاشة LCD

##### خطوات التوصيل

  • توصيل الطرف GND (الأرضي) لشاشة LCD بطرف GND (الأرضي) الخاص بالأردوينو (سلك أسود)
  • توصيل طرف Power (الطاقة) لشاشة LCD بالطرف 5V (فولت) بالأردوينو (سلك أحمر)
  • توصيل طرف SDA لشاشة LCD بطرف SDA بالأردوينو (سلك أخضر)
  • توصيل طرف SCL لشاشة LCD بطرف SCL بالأردوينو (سلك أصفر)
  • محرك سيرفو مصغر (Micro Servo)
#### توصيل محرك السيرفو المصغر

##### خطوات التوصيل

  • توصيل الطرف GND (الأرضي) للمحرك بطرف GND (الأرضي) بالأردوينو (سلك أسود)
  • توصيل طرف Power (الطاقة) للمحرك بالطرف 5V (فولت) بالأردوينو (سلك أحمر)
  • توصيل طرف Signal (الإشارة) للمحرك بالطرف الرقمي 11 بالأردوينو (سلك برتقالي)

البرمجة

#### تضمين المكتبات

  • الصيغة العامة: #include
##### مكتبات المشروع الحالي

  • للوحة LCD: #include
  • للوحة المفاتيح: #include
  • للمحرك المؤازر: #include
#### إنشاء الكائنات

  • كائن لشاشة LCD.
  • كائن للمحرك المؤازر (Servo motor).
  • كائن للوحة المفاتيح.
##### كائن محرك السيرفو المصغر

###### الأمر: Servo servo;

  • `Servo`: نوع الكائن.
  • `servo`: اسم الكائن الفعلي المستخدم.
  • لا يحتاج إلى معاملات للتهيئة.
##### كائن شاشة LCD

###### الأمر: Adafruit_LiquidCrystal lcd(0);

  • `Adafruit_LiquidCrystal`: نوع الكائن.
  • `lcd`: اسم الكائن.
  • `(0)`: معامل التهيئة (عنوان الأردوينو الابتدائي، 0 افتراضياً).
##### كائن لوحة المفاتيح

###### تهيئة الأبعاد

  • الأمر: const byte numRows = 4;
  • الأمر: const byte numCols = 4;
  • `numRows`: عدد الصفوف (4).
  • `numCols`: عدد الأعمدة (4).
###### تحديد مصفوفة المفاتيح (keymap)

  • مصفوفة ثنائية الأبعاد تحدد شكل لوحة المفاتيح.
#### دالة setup()

##### تهيئة محرك السيرفو

  • `servo.attach(11);`: ربط السيرفو بالطرف 11.
  • `servo.write(0);`: ضبط زاوية السيرفو على 0 درجة.
##### تهيئة شاشة LCD وتعيين كلمة المرور

  • `lcd.begin(16, 2);`: تهيئة شاشة LCD ذات 16 عمود وصفين.
  • `lcd.setCursor(0, 0);`: تحديد موقع الكتابة في العمود 0، الصف 0.
  • `lcd.print("Set 4 character");`: طباعة "Set 4 character" على الصف الأول.
  • `lcd.setCursor(0, 1);`: تحديد موقع الكتابة في العمود 0، الصف 1.
  • `lcd.print("password:");`: طباعة "password:" على الصف الثاني.
##### استقبال كلمة المرور من لوحة المفاتيح

  • حلقة `for` لتخزين 4 أحرف.
  • `password[i] = keypad.waitForKey();`: استقبال حرف وتخزينه في مصفوفة `password`.
#### دالة loop()

##### عرض رسالة الطلب

  • `lcd.clear();`: مسح شاشة LCD.
  • `lcd.setCursor(0, 0);`: تحديد موقع الكتابة في العمود 0، الصف 0.
  • `lcd.print("Enter password:");`: طباعة "Enter password:" على الشاشة.
##### التحقق من كلمة المرور

  • إنشاء متغير منطقي `correctPass` وضبطه على `true`.
  • إنشاء متغير `buttonPressed` لتخزين المفتاح المضغوط.
  • استخدام حلقة `for` لفحص 4 أزرار.
  • `buttonPressed = keypad.waitKey();`: انتظار ضغط مفتاح وتخزينه.
  • مقارنة كل مفتاح مع الرقم المقابل في مصفوفة `password`.
  • إذا كان المفتاح غير مطابق، يتم ضبط `correctPass` على `false`.
  • `lcd.setCursor(i, 1);`: تحديد موقع طباعة المفتاح المضغوط على الصف الثاني.
  • `lcd.print(buttonPressed);`: طباعة المفتاح المضغوط على الشاشة.
  • `delay(1000);`: تأخير لمدة ثانية واحدة.
##### تنفيذ الإجراء عند صحة المرور

  • إذا كان `correctPass` يساوي `true`، يتم مسح شاشة LCD باستخدام `lcd.clear();`.
```

نقاط مهمة

  • وظيفة دالة `loop()` هي تنفيذ أوامر التحقق من كلمة المرور بشكل متكرر.
  • يتم استخدام حلقة `for` لمقارنة 4 أزرار مضغوطة مع كلمة المرور المخزنة.
  • إذا كانت جميع الأزرار صحيحة، يتم مسح الشاشة كإجراء أولي.

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

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

أوامر دالة ( ) loop هي:

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

أوامر دالة ( ) loop هي:

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

void loop() { // clear the screen and display the new message lcd.clear(); lcd.setCursor(0, 0); lcd.print("Enter password:"); bool correctPass = true; char buttonPressed; // this code checks each button pressed against the corresponding password // e.g. it will check the 1st button pressed against the first digit of the // password and so on for (int i = 0; i < 4; i++) { buttonPressed = keypad.waitKey(); if(password[i] != buttonPressed){ correctPass = false; } lcd.setCursor(i, 1); lcd.print(buttonPressed); } delay(1000); //this code will be executed if the password is correct if (correctPass) { // clear the lcd screen lcd.clear(); } }

نوع: METADATA

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

نوع: METADATA

250

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

--- SECTION: أوامر دالة ( ) loop هي: --- أوامر دالة ( ) loop هي: void loop() { // clear the screen and display the new message lcd.clear(); lcd.setCursor(0, 0); lcd.print("Enter password:"); bool correctPass = true; char buttonPressed; // this code checks each button pressed against the corresponding password // e.g. it will check the 1st button pressed against the first digit of the // password and so on for (int i = 0; i < 4; i++) { buttonPressed = keypad.waitKey(); if(password[i] != buttonPressed){ correctPass = false; } lcd.setCursor(i, 1); lcd.print(buttonPressed); } delay(1000); //this code will be executed if the password is correct if (correctPass) { // clear the lcd screen lcd.clear(); } } وزارة التعليم Ministry of Education 2025 - 1447 250

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

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

ما هي الوظيفة الأساسية للدالة `loop()` في برمجة إنترنت الأشياء؟

  • أ) تهيئة الأجهزة والمتغيرات مرة واحدة فقط عند بدء التشغيل.
  • ب) تنفيذ مجموعة من الأوامر بشكل متكرر ومستمر بعد التهيئة.
  • ج) تخزين كلمة المرور في ذاكرة المتحكم الدقيق.
  • د) إيقاف تشغيل النظام عند اكتشاف خطأ في كلمة المرور.

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

الإجابة: تنفيذ مجموعة من الأوامر بشكل متكرر ومستمر بعد التهيئة.

الشرح: 1. الدالة `loop()` هي جزء أساسي في برمجة المتحكمات الدقيقة (مثل Arduino). 2. يتم تنفيذ الأوامر الموجودة بداخلها بشكل متكرر ولانهائي بعد تنفيذ دالة `setup()` مرة واحدة. 3. تُستخدم عادةً لقراءة المدخلات ومعالجتها وتحديث المخرجات باستمرار.

تلميح: فكر في الجزء من الكود الذي يعمل باستمرار بعد الإعداد الأولي.

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

في الكود المقدم، ما الغرض من المتغير المنطقي `correctPass`؟

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

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

الإجابة: تتبع وتخزين حالة مطابقة كلمة المرور المدخلة مع كلمة المرور المخزنة.

الشرح: 1. يتم تهيئة المتغير `correctPass` بالقيمة `true` افتراضياً. 2. داخل الحلقة `for`، تتم مقارنة كل زر يتم الضغط عليه مع الرقم المقابل في كلمة المرور المخزنة (`password[i]`). 3. إذا حدث عدم تطابق في أي مرحلة، يتم تعيين قيمة `correctPass` إلى `false`. 4. في النهاية، يتم استخدام قيمته لاتخاذ قرار (فتح القفل إذا كانت `true`).

تلميح: انظر إلى كيفية تغيير قيمته داخل الحلقة بناءً على نتيجة المقارنة.

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

في نظام فتح قفل رقمي باستخدام لوحة مفاتيح، ما هي الخطوات المنطقية الرئيسية التي ينفذها الكود داخل دالة `loop()` كما هو موضح؟

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

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

الإجابة: عرض رسالة طلب الإدخال، قراءة 4 أزرار متتالية، مقارنتها بكلمة مرور مخزنة، ثم تنفيذ إجراء بناءً على النتيجة.

الشرح: 1. مسح شاشة LCD وعرض رسالة "أدخل كلمة المرور:". 2. استخدام حلقة `for` للتكرار 4 مرات (طول كلمة المرور). 3. في كل تكرار: انتظار ضغط زر، ومقارنته بالرقم المقابل في كلمة المرور المخزنة. 4. بعد الحلقة: انتظار ثانية واحدة. 5. التحقق من قيمة `correctPass`: إذا كانت صحيحة، يتم مسح الشاشة (كمثال على فتح القفل).

تلميح: رتب الأحداث: ماذا يظهر أولاً؟ ثم ماذا يقرأ؟ وأخيراً ماذا يفعل؟

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