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

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

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

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

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

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

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

📝 ملخص الصفحة

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

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

(لا تحتوي الصفحة على تعريفات جديدة للمصطلحات، بل على تمارين تطبيقية فقط).

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

```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!".
#### الإعدادات الأولية (Setup)

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

  • `#include `: مكتبة التحكم بشاشة LCD.
  • `#include `: مكتبة التعامل مع لوحة المفاتيح.
  • `#include `: مكتبة التحكم بمحرك السيرفو.
##### تعريف المتغيرات والكائنات

  • `Adafruit_LiquidCrystal lcd(0);`: إنشاء كائن للتحكم بشاشة LCD.
  • `Servo servo;`: إنشاء كائن للتحكم بمحرك السيرفو.
  • `const byte numRows = 4;`: عدد صفوف لوحة المفاتيح.
  • `const byte numCols = 4;`: عدد أعمدة لوحة المفاتيح.
##### تعيين خرائط المفاتيح والتوصيلات

  • `char keymap[numRows][numCols]`: مصفوفة تحدد شكل المفاتيح على اللوحة (من 1 إلى D).
  • `byte rowPins[numRows] = {9,8,7,6};`: تحديد منافذ الأردوينو المتصلة بصفوف اللوحة.
  • `byte colPins[numCols] = {5,4,3,2};`: تحديد منافذ الأردوينو المتصلة بأعمدة اللوحة.
  • `Keypad keypad = Keypad(...);`: تهيئة كائن لوحة المفاتيح باستخدام الخريطة والتوصيلات المحددة.
##### تهيئة المكونات في `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:" على السطر الثاني.
###### تخزين كلمة المرور

  • `char password[4];`: تعريف مصفوفة لتخزين 4 أحرف لكلمة المرور.
  • `for(int i = 0; i < 4; i++){ password[i] = keypad.waitKey(); }`: حلقة لجمع 4 مفاتيح من لوحة المفاتيح وتخزينها في المصفوفة.

تمارين تطبيقية جديدة

التمرين 1

#### المهمة

  • إنشاء دائرة في برنامج تينكركاد.
#### المكونات

  • مستشعر درجة الحرارة.
  • شاشة LCD.
#### البرمجة

  • برمجة الدائرة باستخدام لغة C++.
#### الوظيفة

  • عرض درجة الحرارة المقروءة من المستشعر على شاشة LCD.

التمرين 2

#### المهمة

  • إنشاء دائرة في برنامج تينكركاد.
#### المكونات

  • لوحة مفاتيح 4x4.
  • شاشة LCD.
#### البرمجة

  • برمجة الدائرة باستخدام لغة C++.
#### الوظيفة

  • عرض الأحرف التي يتم الضغط عليها من لوحة المفاتيح على شاشة LCD.
```

نقاط مهمة

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

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

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

1

نوع: QUESTION_ACTIVITY

أنشئ دائرة في برنامج تينكركاد تتصل بمستشعر درجة الحرارة وشاشة LCD، ثم قم ببرمجتها باستخدام لغة C++ لعرض درجة الحرارة التي يقوم المستشعر بقراءتها على شاشة LCD.

2

نوع: QUESTION_ACTIVITY

أنشئ دائرة في برنامج تينكركاد تتصل بلوحة مفاتيح 4x4 وشاشة LCD، ثم قم ببرمجتها باستخدام لغة C++ لعرض الأحرف التي يتم الضغط عليها وذلك على شاشة LCD.

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

--- SECTION: 1 --- أنشئ دائرة في برنامج تينكركاد تتصل بمستشعر درجة الحرارة وشاشة LCD، ثم قم ببرمجتها باستخدام لغة C++ لعرض درجة الحرارة التي يقوم المستشعر بقراءتها على شاشة LCD. --- SECTION: 2 --- أنشئ دائرة في برنامج تينكركاد تتصل بلوحة مفاتيح 4x4 وشاشة LCD، ثم قم ببرمجتها باستخدام لغة C++ لعرض الأحرف التي يتم الضغط عليها وذلك على شاشة LCD.

✅ حلول أسئلة الكتاب الرسمية

عدد الأسئلة: 2

سؤال 1: أنشئ دائرة في برنامج تينكركاد تتصل بمستشعر درجة الحرارة وشاشة LCD، ثم قم ببرمجتها باستخدام لغة ++C لعرض درجة الحرارة التي يقوم المستشعر بقراءتها على شاشة LCD.

الإجابة: س1: المكونات: Arduino + مستشعر TMP36 + شاشة LCD. التوصيل: المستشعر (5V, A0, GND). الـ LCD (توصيل 4-bit قياسي). البرمجة: قراءة A0، حساب الحرارة (T = (V - 0.5) * 100)، وعرضها على الشاشة.

خطوات الحل:

  1. **الشرح:** لنفهم هذا السؤال. المطلوب هو تصميم دائرة إلكترونية في برنامج محاكاة (تينكركاد) وبرمجتها. الفكرة هنا هي ربط مستشعر لقياس درجة الحرارة بشاشة عرض (LCD) باستخدام متحكم (مثل Arduino) وكتابة برنامج بلغة C++ لجعل الشاشة تعرض القراءة. أولاً، في برنامج تينكركاد، نختار المكونات: متحكم (Arduino Uno)، مستشعر درجة حرارة (مثل TMP36)، وشاشة LCD (مثل 16x2). ثانياً، نقوم بالتوصيلات: نربط أطراف مستشعر TMP36 (VCC، GND، والإشارة) مع متحكم Arduino (مثلاً: VCC إلى 5V، GND إلى GND، والإشارة إلى منفذ تماثلي مثل A0). ثم نربط شاشة LCD مع المتحكم باستخدام طريقة التوصيل القياسية (4-bit mode) التي تربط دبابيس البيانات (D4-D7) ودبابيس التحكم (RS، E) مع منافذ رقمية في Arduino. ثالثاً، نكتب البرنامج بلغة C++ في بيئة Arduino. نبدأ بتضمين المكتبة اللازمة للـ LCD. في دالة setup()، نبدأ الاتصال بالشاشة. في دالة loop()، نقرأ الجهد الكهربائي من المنفذ التماثلي A0 (المرتبط بالمستشعر)، ثم نحوله إلى درجة حرارة باستخدام قانون التحويل المناسب للمستشعر (مثلاً: درجة الحرارة = (الجهد - 0.5) × 100). أخيراً، نستخدم أمر الطباعة على الشاشة (مثل lcd.print()) لعرض قيمة درجة الحرارة المحسوبة. إذن، الإجابة تتلخص في: تجميع هذه المكونات في دائرة، وتنفيذ التوصيلات الصحيحة، وكتابة برنامج يقرأ من المستشعر ويحسب ويعرض النتيجة على الشاشة.

سؤال 2: أنشئ دائرة في برنامج تينكركاد تتصل بلوحة مفاتيح 4x4 وشاشة LCD، ثم قم ببرمجتها باستخدام لغة ++C لعرض الأحرف التي يتم الضغط عليها وذلك على شاشة LCD.

الإجابة: س2: المكونات: Keypad 4x4 + LCD. التوصيل: الصفوف D7-D10، الأعمدة D6, A0-A2. البرمجة: استخدام مكتبة Keypad، تعريف الأزرار، وطباعة الزر المضغوط.

خطوات الحل:

  1. **الشرح:** الفكرة في هذا السؤال هي بناء دائرة تفاعلية حيث يمكن للمستخدم الضغط على أزرار لوحة مفاتيح رقمية (4x4) وعرض الحرف المضغوط على شاشة LCD. نبدأ في برنامج تينكركاد باختيار المكونات: متحكم (Arduino)، لوحة مفاتيح 4x4، وشاشة LCD. للتوصيل: نربط دبابيس الصفوف (4 صفوف) والأعمدة (4 أعمدة) للوحة المفاتيح مع منافذ رقمية في المتحكم. طريقة شائعة هي ربط الصفوف بأربعة منافذ رقمية (مثل D7 إلى D10) وربط الأعمدة بأربعة منافذ رقمية أخرى (مثل D6 و A0 إلى A2). ثم نربط شاشة LCD كما في السؤال السابق باستخدام التوصيل القياسي (4-bit mode). بالنسبة للبرمجة بلغة C++، نستخدم مكتبة جاهزة للوحة المفاتيح (مثل Keypad.h) لتسهيل قراءة الأزرار. في البرنامج، نعرّف مصفوفة تحوي رموز الأزرار (مثل الأرقام 0-9 والحروف A-D)، ونحدد دبابيس الصفوف والأعمدة. في دالة setup()، نبدأ شاشة LCD. في دالة loop()، نتحقق باستمرار إذا تم الضغط على زر باستخدام أمر من المكتبة (مثل keypad.getKey()). إذا تم الضغط على زر، نأخذ قيمته (مثلاً الحرف '1' أو 'A') ونعرضه على شاشة LCD باستخدام أمر الطباعة. إذن الإجابة هي: توصيل لوحة المفاتيح والشاشة بالمتحكم بشكل صحيح، وبرمجة النظام لقراءة الزر المضغوط وعرضه فوراً على الشاشة.

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

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

عند تصميم دائرة في تينكركاد لقراءة درجة الحرارة باستخدام مستشعر TMP36 وعرضها على شاشة LCD، ما هي الخطوة البرمجية الأساسية لتحويل قراءة الجهد إلى درجة حرارة؟

  • أ) استخدام دالة `analogRead()` فقط دون أي معالجة.
  • ب) حساب درجة الحرارة باستخدام القانون: T = الجهد المقاس * 50
  • ج) حساب درجة الحرارة باستخدام القانون: T = (الجهد المقاس - 0.5) * 100
  • د) قسمة قراءة المنفذ التماثلي على 1024 مباشرة.

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

الإجابة: حساب درجة الحرارة باستخدام القانون: T = (الجهد المقاس - 0.5) * 100

الشرح: 1. قراءة الجهد من المنفذ التماثلي (مثل A0). 2. تحويل القيمة الرقمية إلى جهد (فولت). 3. تطبيق قانون تحويل المستشعر TMP36: درجة الحرارة (بالسلسيوس) = (الجهد - 0.5) * 100.

تلميح: فكر في العلاقة الرياضية بين الجهد الكهربائي الخارج من المستشعر ودرجة الحرارة المقاسة.

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

ما هو الغرض الأساسي من استخدام مكتبة `Keypad.h` عند برمجة دائرة تتضمن لوحة مفاتيح 4x4 في مشروع إنترنت الأشياء؟

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

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

الإجابة: لتسهيل قراءة الأزرار المضغوطة والتعامل مع مصفوفة المفاتيح دون الحاجة لبرمجة معقدة للمسح.

الشرح: مكتبة Keypad.h توفر دوال جاهزة لمسح صفوف وأعمدة لوحة المفاتيح الرقمية، والكشف عن الزر المضغوط، وإرجاع قيمته (مثل '1' أو 'A')، مما يوفر الوقت ويقلل الأخطاء في البرمجة اليدوية للمسح.

تلميح: فكر في كيفية تبسيط المهمة البرمجية للتفاعل مع جهاز إدخال متعدد الأزرار.

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

في مشروع يجمع بين مستشعر وشاشة عرض باستخدام Arduino، ما هو التسلسل المنطقي الصحيح للخطوات داخل دالة `loop()` الرئيسية؟

  • أ) إرسال البيانات للعرض → معالجة البيانات → قراءة المستشعر.
  • ب) تهيئة المنافذ → قراءة المستشعر → معالجة البيانات.
  • ج) قراءة المستشعر → معالجة البيانات → إرسال النتيجة للعرض.
  • د) معالجة البيانات → قراءة المستشعر → إرسال البيانات للعرض.

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

الإجابة: قراءة المستشعر → معالجة البيانات → إرسال النتيجة للعرض.

الشرح: 1. قراءة البيانات من المستشعر (مثل `analogRead(A0)`). 2. معالجة هذه البيانات (مثل تحويلها إلى درجة حرارة). 3. إرسال النتيجة النهائية لعرضها على شاشة LCD (مثل `lcd.print()`).

تلميح: تذكر أن البرنامج يعمل بشكل متكرر (حلقة) لجمع البيانات وعرضها.

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

أي من المكونات التالية يعتبر ضرورياً لتنفيذ مشروع تفاعلي يسمح بإدخال رقم عبر لوحة مفاتيح وعرضه على شاشة باستخدام Arduino؟

  • أ) مستشعر ضوء ومحرك سيرفو.
  • ب) مستشعر درجة حرارة ومصباح LED.
  • ج) لوحة مفاتيح (Keypad) وشاشة LCD.
  • د) مكبر صوت ومقاومة متغيرة.

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

الإجابة: لوحة مفاتيح (Keypad) وشاشة LCD.

الشرح: الوظيفة تتطلب: 1. جهاز إدخال (لوحة مفاتيح) لإدخال البيانات. 2. جهاز إخراج (شاشة LCD) لعرض البيانات. المتحكم (Arduino) هو العقل الذي يربط بينهما.

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

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