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

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

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

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

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

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

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

📝 ملخص الصفحة

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

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

لا تحتوي هذه الصفحة على تعريفات جديدة.

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

```markmap

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

التمرين 1: دالة تضخيم الإشارة

المطلوب

  • كتابة دالة بلغة C++

خصائص الدالة

  • تستقبل وسيطين
#### النوع: float

  • تستقبل إشارة تناظرية
  • تستقبل مضاعفًا

الوظيفة

  • تضخيم (مضاعفة) الإشارة
  • إرجاع الإشارة بعد التضخيم

التمرين 2: تحويل درجة الحرارة وإرسالها

المطلوب

  • رسم مخطط بلغة C++

خطوات المخطط

  • قراءة إشارة تناظرية
#### تمثل: درجة الحرارة بالفهرنهايت

  • إنشاء دالة تحويل
#### التحويل من فهرنهايت إلى مئوية

  • إرسال القيمة المحولة
#### الإرسال إلى: طرف كمخرج تناظري

التمرين 3: البحث عن خطأ قاعدي ومنطقي

الكود الأول

#### خطأ قاعدي

  • استخدام دالة `delay()` مع قيمة نصية `"1000"`
#### خطأ منطقي

  • استخدام `--counter` في حلقة `for` مما يؤدي إلى عد تنازلي لا نهائي

الكود الثاني

#### خطأ قاعدي

  • استخدام `digitalRead()` لقراءة قيمة تناظرية من `A0`
#### خطأ منطقي

  • مقارنة قيمة درجة الحرارة بـ `270` دون توضيح الوحدة (مئوية؟ فهرنهايت؟)

التمرين 4: تضخيم إشارة تناظرية في حلقة

المطلوب

  • رسم مخطط C++ للأردوينو

خطوات المخطط

  • استخدام دالة التمرين الأول
  • قراءة مدخل إشارة تناظرية
  • إنشاء تكرار `for`
#### الوظيفة داخل `for`

  • استخدام الدالة لتضخيم الإشارة الأصلية 5 مرات
  • إرسال الإشارة المضخمة في كل مرة إلى طرف كمخرج تناظري

التمرين 5: التحكم في دايودين مشعين للضوء (LEDs)

المطلوب

  • التوسع في المثال السابق

خطوات الإضافة

  • إضافة دايود مشع للضوء (LED) آخر بلون مختلف
#### وظيفة الـ LED الجديد

  • يومض كل مرة يتم فيها إيقاف تشغيل الـ LED الأول
```

نقاط مهمة

  • التمرين 4 هو تطبيق عملي للدالة التي تم كتابتها في التمرين 1 داخل حلقة تكرار.
  • التمرين 5 يضيف عنصر تحكم مرئي (LED) يعمل بشكل معاكس لعنصر التحكم الأول.

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

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

4

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

ارسم مخطط ++C للأردوينو يستخدم خيم التمرن الأول ويقرأ مدخل إشارة تناظري. ثم أنشئ تكرار for يستخدم الدالة في التمرين الأول لتضخيم الإشارة الأصلية 5 مرات، وبة كل مرة تضخم الإشارة ترسل إلى طرف كمخرج تناظري.

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

توسع في المثال السابق بالدايودات المشعة للضوء (LEDs) وقم بإضافة دايود مشع للضوء آخر بلون مختلف يومض كل مرة يتم فيها إيقاف تشغيل الدايود المشع للضوء الأول.

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

--- SECTION: 4 --- ارسم مخطط ++C للأردوينو يستخدم خيم التمرن الأول ويقرأ مدخل إشارة تناظري. ثم أنشئ تكرار for يستخدم الدالة في التمرين الأول لتضخيم الإشارة الأصلية 5 مرات، وبة كل مرة تضخم الإشارة ترسل إلى طرف كمخرج تناظري. توسع في المثال السابق بالدايودات المشعة للضوء (LEDs) وقم بإضافة دايود مشع للضوء آخر بلون مختلف يومض كل مرة يتم فيها إيقاف تشغيل الدايود المشع للضوء الأول.

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

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

سؤال 4: ارسم مخطط ++C للأردوينو يستخدم الدالة في التمرين الأول ويقرأ مدخل إشارة تناظري. ثم أنشئ تكرار for يستخدم الدالة في التمرين الأول لتضخيم الإشارة الأصلية 5 مرات، وفي كل مرة تُضخم الإشارة، تُرسل إلى طرف كمخرج تناظري.

الإجابة: س:4: (1) ابدأ (2) تهيئة المتغيرات (A0, PWM, الدالة) (3) setup: تعيين طرف الخرج (4) loop: قراءة A0، ثم تكرار for (5 مرات): استدعاء الدالة وتضخيم الإشارة وإرسالها للخرج.

خطوات الحل:

  1. **الخطوة 1 (فهم المطلوب):** لنفهم هذا السؤال. المطلوب هو كتابة برنامج بلغة ++C للأردوينو يقوم بمهمتين رئيسيتين: 1. قراءة إشارة تناظرية من مدخل معين. 2. تضخيم هذه الإشارة 5 مرات باستخدام حلقة تكرار وإرسال النتيجة إلى مخرج تناظري في كل مرة.
  2. **الخطوة 2 (تحديد المكونات الأساسية):** لنحدد ما نحتاجه: - دالة التضخيم من التمرين الأول (لنفترض اسمها `amplifySignal`). - مدخل تناظري للقراءة (مثل `A0`). - مخرج تناظري للإرسال (مثل `PWM` على طرف رقمي يدعم ذلك، مثل `D3`). - متغير لتخزين قيمة الإشارة المقروءة. - حلقة `for` للتكرار 5 مرات.
  3. **الخطوة 3 (كتابة الهيكل العام):** نبدأ بكتابة الهيكل الأساسي للبرنامج: cpp void setup() { // تهيئة الطرف كمخرج تناظري pinMode(3, OUTPUT); // مثال لطرف PWM } void loop() { // قراءة الإشارة من المدخل التناظري A0 int sensorValue = analogRead(A0); // تكرار for لتضخيم الإشارة 5 مرات for (int i = 0; i < 5; i++) { // استدعاء دالة التضخيم int amplifiedValue = amplifySignal(sensorValue); // إرسال القيمة المضخمة إلى المخرج التناظري analogWrite(3, amplifiedValue); // انتظار قصير لرؤية التأثير (اختياري) delay(100); } } **ملاحظة:** دالة `amplifySignal` يجب تعريفها في البرنامج بناءً على التمرين الأول (مثل ضرب القيمة في عامل معين).
  4. **الخطوة 4 (النتيجة):** إذن، مخطط البرنامج هو: 1. **التهيئة (`setup`)**: تعيين طرف كمخرج تناظري. 2. **الحلقة الرئيسية (`loop`)**: - قراءة الإشارة من `A0`. - استخدام `for` للتكرار 5 مرات. - في كل تكرار: استدعاء دالة التضخيم، ثم إرسال الناتج إلى المخرج التناظري. هذا يضمن تنفيذ المطلوب بتضخيم الإشارة 5 مرات وإرسالها في كل مرة.

سؤال 5: توسع في المثال السابق الخاص بالدايودات المشعة للضوء الوامضة (LEDs) وقم بإضافة دايود مشع للضوء آخر بلون مختلف يومض كل مرة يتم فيها إيقاف تشغيل الدايود المشع للضوء الأول.

الإجابة: س:5: التوصيل: إضافة LED2 مع مقاومة (220Ω) على طرف آخر. البرنامج: في loop يتم تبادل التشغيل بين LED1 و LED2 (يومض بالتناوب).

خطوات الحل:

  1. **الخطوة 1 (فكرة التوسع):** الفكرة هنا هي بناء على مثال سابق لـ LED يومض، نريد إضافة LED آخر بلون مختلف. هذا الـ LED الجديد سوف يومض في الوقت الذي يتم فيه إيقاف تشغيل الـ LED الأول.
  2. **الخطوة 2 (التوصيلات الكهربائية):** لننفذ ذلك عملياً: - **LED الأول (LED1)**: متصل بالفعل مع مقاومة (مثل 220Ω) على طرف رقمي (مثل `D2`). - **LED الثاني (LED2)**: نضيفه مع مقاومة (220Ω) على طرف رقمي آخر (مثل `D3`). - التأكد من توصيل الأطراف السالبة (الكاثود) لـ LEDs إلى الأرضي (GND) في الأردوينو.
  3. **الخطوة 3 (البرمجة):** نكتب برنامجاً يجعل LEDs يومضان بالتناوب: cpp void setup() { pinMode(2, OUTPUT); // تهيئة LED1 كخرج pinMode(3, OUTPUT); // تهيئة LED2 كخرج } void loop() { // تشغيل LED1 وإيقاف LED2 digitalWrite(2, HIGH); // LED1 يومض digitalWrite(3, LOW); // LED2 مطفأ delay(500); // انتظار نصف ثانية // إيقاف LED1 وتشغيل LED2 digitalWrite(2, LOW); // LED1 مطفأ digitalWrite(3, HIGH); // LED2 يومض delay(500); // انتظار نصف ثانية } **شرح البرنامج:** - في `setup`، نهيئ الطرفين `D2` و `D3` كمخارج. - في `loop`، نستخدم `digitalWrite` للتحكم في LEDs: - أولاً: نشغل LED1 ونطفئ LED2. - ثانياً: نطفئ LED1 ونشغل LED2. - التأخير (`delay`) يتحكم في سرعة الوميض.
  4. **الخطوة 4 (النتيجة):** إذن، الإضافة هي: - **توصيل LED2** على طرف رقمي جديد مع مقاومة. - **تعديل البرنامج** ليشمل التحكم في كلا LEDs، بحيث يومضان بالتناوب: عندما يكون LED1 مشتعلاً، LED2 مطفأ، والعكس صحيح. هذا يحقق المطلوب بإضافة LED يومض عند إيقاف الأول.

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

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

ما هي الخطوات الأساسية لكتابة برنامج ++C للأردوينو يقرأ إشارة تناظرية من A0، ثم يضخمها 5 مرات باستخدام دالة وحلقة for، ويرسل الناتج إلى مخرج تناظري في كل تكرار؟

  • أ) 1. قراءة الإشارة من A0. 2. تهيئة المخرج التناظري. 3. استخدام حلقة while للتكرار. 4. إرسال القيمة الأصلية مباشرة.
  • ب) 1. تهيئة المخرج التناظري في setup. 2. قراءة الإشارة من A0 في loop. 3. استخدام حلقة for للتكرار 5 مرات. 4. في كل تكرار: استدعاء دالة التضخيم وإرسال الناتج إلى المخرج التناظري.
  • ج) 1. تعريف دالة التضخيم فقط. 2. استخدام حلقة for لقراءة A0 5 مرات. 3. تخزين القيم في مصفوفة دون إرسال.
  • د) 1. تهيئة المدخل التناظري كخرج. 2. استخدام حلقة for للتكرار 10 مرات. 3. في كل تكرار: قراءة A0 وإرسال القيمة دون تضخيم.

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

الإجابة: 1. تهيئة المخرج التناظري في setup. 2. قراءة الإشارة من A0 في loop. 3. استخدام حلقة for للتكرار 5 مرات. 4. في كل تكرار: استدعاء دالة التضخيم وإرسال الناتج إلى المخرج التناظري.

الشرح: 1. في دالة `setup()`، قم بتهيئة الطرف المطلوب كمخرج تناظري باستخدام `pinMode()`. 2. في دالة `loop()`، اقرأ قيمة الإشارة التناظرية من المدخل (مثل A0) باستخدام `analogRead()`. 3. أنشئ حلقة `for` تتكرر 5 مرات. 4. داخل الحلقة: استدع الدالة المسؤولة عن تضخيم الإشارة (مثل `amplifySignal()`)، ثم أرسل القيمة الناتجة إلى المخرج التناظري باستخدام `analogWrite()`.

تلميح: ركز على ترتيب العمليات: التهيئة أولاً، ثم القراءة، ثم التكرار مع المعالجة والإرسال.

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

كيف يمكن تعديل برنامج وميض LED واحد ليومض LEDين (LED1 و LED2) بالتناوب، بحيث يضيء أحدهما عندما ينطفئ الآخر؟

  • أ) 1. توصيل كلا الـ LEDين على نفس الطرف. 2. تهيئة الطرف كمخرج. 3. في loop: تشغيل كليهما معاً ثم إطفائهما معاً.
  • ب) 1. توصيل LED2 على طرف رقمي جديد مع مقاومة. 2. تهيئة طرفي LED1 و LED2 كمخارج في setup. 3. في loop: تشغيل LED1 وإطفاء LED2، ثم الانتظار، ثم إطفاء LED1 وتشغيل LED2، ثم الانتظار.
  • ج) 1. توصيل LED2 مباشرة إلى 5V دون مقاومة. 2. تهيئة طرف واحد كمخرج. 3. في loop: محاولة التحكم بكليهما بنفس الأمر.
  • د) 1. استخدام مدخل تناظري للتحكم في سطوع LED2 فقط. 2. تهيئة LED1 كمخرج وLED2 كمدخل. 3. في loop: قراءة قيمة من LED2 لتحديد حالة LED1.

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

الإجابة: 1. توصيل LED2 على طرف رقمي جديد مع مقاومة. 2. تهيئة طرفي LED1 و LED2 كمخارج في setup. 3. في loop: تشغيل LED1 وإطفاء LED2، ثم الانتظار، ثم إطفاء LED1 وتشغيل LED2، ثم الانتظار.

الشرح: 1. قم بتوصيل LED الثاني (LED2) مع مقاومة (مثل 220 أوم) على طرف رقمي مختلف (مثل D3). 2. في دالة `setup()`، عيّن كلا الطرفين (مثل D2 للـLED1 و D3 للـLED2) كمخارج باستخدام `pinMode(2, OUTPUT)` و `pinMode(3, OUTPUT)`. 3. في دالة `loop()`: - استخدم `digitalWrite(2, HIGH)` لتشغيل LED1 و `digitalWrite(3, LOW)` لإطفاء LED2. - استخدم `delay()` للانتظار. - ثم استخدم `digitalWrite(2, LOW)` لإطفاء LED1 و `digitalWrite(3, HIGH)` لتشغيل LED2. - استخدم `delay()` مرة أخرى.

تلميح: التناوب يعني أن حالة أحدهما (HIGH/LOW) تكون عكس حالة الآخر في أي لحظة.

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