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

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

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

الدرس: لبنات تينكركاد

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

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

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

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

📝 ملخص الصفحة

📚 برمجة مستشعر الحرارة في تينكركاد والأردوينو

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

لبنات تينكركاد: بيئة برمجة مرئية (بلوكات) لإنشاء دوائر الأردوينو والمحاكاة.

برمجة الأردوينو: عملية كتابة تعليمات برمجية (كود) بلغة C++ للتحكم في لوحة الأردوينو ومكوناتها.

الكائن التسلسلي (Serial): أداة في برمجة الأردوينو تستخدم للتواصل وطباعة البيانات على الشاشة التسلسلية (Serial Monitor).

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

```markmap

مثال محرك التيار المستمر

الهدف من المشروع

إنشاء دائرة للتحكم في محرك DC بناءً على درجة الحرارة

المكونات المطلوبة

لوحة أردوينو (Arduino Uno R3)

محرك تيار مستمر (DC motor)

مستشعر درجة الحرارة (TMP36)

توصيل الدائرة

توصيل مستشعر الحرارة TMP36

#### الطرف Power (الطاقة) إلى 5V في الأردوينو (سلك أحمر)

#### الطرف Vout (مخرج الجهد) إلى الطرف التشابهي A0 (سلك أخضر)

#### الطرف GND (الأرضي) إلى GND في الأردوينو (سلك أسود)

توصيل محرك DC

#### الطرف 1 من المحرك إلى GND في الأردوينو (سلك أسود)

#### الطرف 2 من المحرك إلى الطرف الرقمي 11 (سلك أحمر)

البرمجة

لبنات تينكركاد (Blockly)

#### قراءة مستشعر الحرارة من المنفذ A0

#### طباعة القراءة على الشاشة التسلسلية

#### إذا كانت درجة الحرارة >= 27°C

##### تشغيل المنفذ 11 (HIGH)

##### الانتظار 2 ثانية

##### إيقاف المنفذ 11 (LOW)

برمجة الأردوينو (C++)

#### إعداد المنافذ في دالة `setup()`

##### `pinMode(A0, INPUT);`

##### `pinMode(11, OUTPUT);`

##### `Serial.begin(9600);`

#### المنطق الرئيسي في دالة `loop()`

##### قراءة وتحويل قيمة الحرارة: `temperature = (-40 + 0.488155 * (analogRead(A0) - 20));`

##### طباعة الحرارة: `Serial.println(temperature);`

##### التحكم الشرطي في المحرك: `if (temperature >= 27) { ... }`

العناصر المرئية

شكل 6.15: مكونات المشروع

شكل 6.16: توصيل الدائرة

لبنات تينكركاد

كود C++ للأردوينو

```

نقاط مهمة

  • يقرأ البرنامج درجة الحرارة من المستشعر المتصل بالمنفذ التناظري A0.
  • عندما تصل درجة الحرارة إلى 27°C أو أكثر، يُشغل محرك التيار المستمر (عبر المنفذ الرقمي 11) لمدة ثانيتين.
  • في تينكركاد، يمكن رؤية الكود المكافئ بلغة C++ عن طريق اختيار وضع البرمجة نص (Text).
  • دالة `Serial.begin(9600)` في `setup()` تُجهز الشاشة التسلسلية للاستخدام.
  • دالة `Serial.println()` تطبع البيانات وتضيف سطراً جديداً في النهاية.

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

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

لبنات تينكركاد

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

لبنات تينكركاد

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

forever

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

set temperature to read temperature sensor on pin A0 in units °C

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

print to serial monitor temperature with newline

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

if temperature >= 27 then

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

set pin 11 to HIGH

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

wait 2 secs

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

set pin 11 to LOW

برمجة الأردوينو

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

برمجة الأردوينو

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

سيتم تشغيل البرنامج متغيراً باسم temperature سيتيم توصيله بالطرف التناظري A0 في لوحة الأردوينو لتسجيل درجة حرارة البيئة المحيطة. عندما يصل متغير درجة الحرارة temperature إلى القيمة 27 (درجة مئوية) في محاكي تينكركاد، ينشط محرك التيار المستمر لمدة ثانيتين.

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

اختر وضع البرمجة نص (Text) في محرر التعليمات البرمجية لرؤية النص الناتج بلغة C++.

C++

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

C++

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

int temperature = 0;

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

void setup() {

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

pinMode(A0, INPUT);

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

Serial.begin(9600);

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

pinMode(11, OUTPUT);

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

}

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

void loop() {

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

temperature = (-40 + 0.488155 * (analogRead(A0) - 20));

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

Serial.println(temperature);

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

if (temperature >= 27) {

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

digitalWrite(11, HIGH);

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

delay(2000); // Wait for 2000 millisecond(s)

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

digitalWrite(11, LOW);

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

}

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

}

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

يستخدم الكائن التسلسلي (Serial) للطباعة على الشاشة التسلسلية. في دالة ()setup، تقوم دالة ()start بتجهيز الشاشة التسلسلية ليمكن استخدامها لاحقاً. يمكن للمستخدم بعد ذلك طباعة القيم والرسائل على الشاشة باستخدام دالة ()print أو دالة ()println، مع ملاحظة أن دالة ()println ستضيف سطراً جديداً في نهاية الرسالة.

نوع: METADATA

وزارة التعليم

نوع: METADATA

Ministry of Education

نوع: METADATA

237

نوع: METADATA

2025 - 1447

🔍 عناصر مرئية

لبنات تينكركاد

Visual representation of code blocks for reading a temperature sensor and controlling an output based on temperature.

C++

C++ code for Arduino that reads temperature from analog pin A0, prints it to the serial monitor, and controls digital pin 11 based on a threshold.

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

--- SECTION: لبنات تينكركاد --- لبنات تينكركاد forever set temperature to read temperature sensor on pin A0 in units °C print to serial monitor temperature with newline if temperature >= 27 then set pin 11 to HIGH wait 2 secs set pin 11 to LOW --- SECTION: برمجة الأردوينو --- برمجة الأردوينو سيتم تشغيل البرنامج متغيراً باسم temperature سيتيم توصيله بالطرف التناظري A0 في لوحة الأردوينو لتسجيل درجة حرارة البيئة المحيطة. عندما يصل متغير درجة الحرارة temperature إلى القيمة 27 (درجة مئوية) في محاكي تينكركاد، ينشط محرك التيار المستمر لمدة ثانيتين. اختر وضع البرمجة نص (Text) في محرر التعليمات البرمجية لرؤية النص الناتج بلغة C++. --- SECTION: C++ --- C++ int temperature = 0; void setup() { pinMode(A0, INPUT); Serial.begin(9600); pinMode(11, OUTPUT); } void loop() { temperature = (-40 + 0.488155 * (analogRead(A0) - 20)); Serial.println(temperature); if (temperature >= 27) { digitalWrite(11, HIGH); delay(2000); // Wait for 2000 millisecond(s) digitalWrite(11, LOW); } } يستخدم الكائن التسلسلي (Serial) للطباعة على الشاشة التسلسلية. في دالة ()setup، تقوم دالة ()start بتجهيز الشاشة التسلسلية ليمكن استخدامها لاحقاً. يمكن للمستخدم بعد ذلك طباعة القيم والرسائل على الشاشة باستخدام دالة ()print أو دالة ()println، مع ملاحظة أن دالة ()println ستضيف سطراً جديداً في نهاية الرسالة. وزارة التعليم Ministry of Education 237 2025 - 1447 --- VISUAL CONTEXT --- **DIAGRAM**: لبنات تينكركاد Description: Visual representation of code blocks for reading a temperature sensor and controlling an output based on temperature. Context: Illustrates how to use Tinkercad blocks to program an Arduino with a temperature sensor. **DIAGRAM**: C++ Description: C++ code for Arduino that reads temperature from analog pin A0, prints it to the serial monitor, and controls digital pin 11 based on a threshold. Context: Provides the C++ code equivalent to the Tinkercad blocks, explaining serial communication and conditional output.

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

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

في برمجة الأردوينو باستخدام لغة C++، ما الغرض من دالة `Serial.begin(9600)` في دالة `setup()`؟

  • أ) تشغيل محرك التيار المستمر المتصل بالطرف الرقمي 11.
  • ب) قراءة قيمة الحساس التناظري من الطرف A0.
  • ج) تجهيز الشاشة التسلسلية (Serial Monitor) للاستخدام بسرعة نقل بيانات 9600 بت في الثانية.
  • د) تحديد الطرف A0 كطرف إدخال والطرف 11 كطرف إخراج.

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

الإجابة: تجهيز الشاشة التسلسلية (Serial Monitor) للاستخدام بسرعة نقل بيانات 9600 بت في الثانية.

الشرح: 1. `Serial.begin()` تهيئ الاتصال التسلسلي. 2. الرقم 9600 يحدد معدل الباود (سرعة نقل البيانات). 3. هذا يسمح بطباعة القيم والرسائل على الشاشة التسلسلية باستخدام `Serial.print()` أو `Serial.println()`.

تلميح: هذه الدالة تهيئ الاتصال بين الأردوينو والكمبيوتر.

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

في الكود البرمجي المذكور، ما الفرق الرئيسي بين استخدام دالة `Serial.print()` ودالة `Serial.println()`؟

  • أ) `Serial.print()` تستخدم للأرقام فقط، بينما `Serial.println()` تستخدم للنصوص فقط.
  • ب) `Serial.println()` أسرع في التنفيذ من `Serial.print()`.
  • ج) دالة `Serial.println()` تضيف سطراً جديداً في نهاية الرسالة المطبوعة، بينما `Serial.print()` لا تفعل ذلك.
  • د) `Serial.print()` تعمل فقط داخل دالة `loop()`، بينما `Serial.println()` تعمل في أي مكان.

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

الإجابة: دالة `Serial.println()` تضيف سطراً جديداً في نهاية الرسالة المطبوعة، بينما `Serial.print()` لا تفعل ذلك.

الشرح: 1. كلتا الدالتين تستخدمان لإرسال بيانات إلى الشاشة التسلسلية. 2. `Serial.print()` تطبع الرسالة أو القيمة كما هي. 3. `Serial.println()` تطبع الرسالة أو القيمة ثم تضيف أمر 'سطر جديد'، مما يجعل المخرجات التالية تظهر في سطر منفصل.

تلميح: فكر في شكل النص عند عرضه على الشاشة التسلسلية.

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

في مشروع إنترنت الأشياء هذا، ما الشرط الذي يؤدي إلى تشغيل محرك التيار المستمر (تمثيلاً بتفعيل الطرف 11)؟

  • أ) عندما تكون قيمة القراءة التناظرية من الطرف A0 أقل من 20.
  • ب) عندما تكون قيمة متغير درجة الحرارة (`temperature`) أكبر من أو تساوي 27 درجة مئوية.
  • ج) بمجرد تشغيل لوحة الأردوينو، بغض النظر عن درجة الحرارة.
  • د) عندما يضغط المستخدم على زر في الشاشة التسلسلية.

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

الإجابة: عندما تكون قيمة متغير درجة الحرارة (`temperature`) أكبر من أو تساوي 27 درجة مئوية.

الشرح: 1. يتم قراءة درجة الحرارة من الحساس وتحويلها إلى قيمة رقمية في متغير `temperature`. 2. جملة الشرط `if (temperature >= 27)` تتحقق من القيمة. 3. إذا تحقق الشرط (temperature ≥ 27)، يتم تنفيذ الأوامر داخل القوسين: تفعيل الطرف 11، الانتظار ثانيتين، ثم إطفاؤه.

تلميح: ابحث عن جملة الشرط `if` في الكود البرمجي.

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

ما الغرض من استخدام دالة `pinMode()` في دالة `setup()` في برمجة الأردوينو؟

  • أ) قراءة القيمة التناظرية من الحساس المتصل بالطرف.
  • ب) إرسال بيانات إلى الشاشة التسلسلية.
  • ج) تحديد وظيفة الطرف (Pin) سواء كان طرف إدخال (INPUT) أو طرف إخراج (OUTPUT).
  • د) حساب درجة الحرارة من قيمة القراءة التناظرية.

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

الإجابة: تحديد وظيفة الطرف (Pin) سواء كان طرف إدخال (INPUT) أو طرف إخراج (OUTPUT).

الشرح: 1. `pinMode()` دالة أساسية في `setup()`. 2. تأخذ معاملين: رقم الطرف ووظيفته. 3. مثال: `pinMode(A0, INPUT)` يحدد الطرف A0 كمدخل لقراءة الحساس. 4. مثال: `pinMode(11, OUTPUT)` يحدد الطرف 11 كمخرج للتحكم في حمل مثل محرك أو إضاءة.

تلميح: هذه الدالة تهيئ الأطراف قبل البدء في البرنامج الرئيسي.

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

في سياق تحويل قراءة الحساس التناظري إلى درجة حرارة في الكود المذكور (`temperature = (-40 + 0.488155 * (analogRead(A0) - 20))`)، ما الذي يمثله الرقم 20 في المعادلة؟

  • أ) الحد الأدنى لدرجة الحرارة التي يمكن للحساس قياسها.
  • ب) إزاحة أو قيمة معايرة (Offset) لقراءة الحساس التناظري، تُطرح قبل تطبيق عامل التحويل.
  • ج) عدد مرات أخذ القراءة في الثانية الواحدة.
  • د) القيمة التناظرية المقابلة لدرجة حرارة 0 مئوية.

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

الإجابة: إزاحة أو قيمة معايرة (Offset) لقراءة الحساس التناظري، تُطرح قبل تطبيق عامل التحويل.

الشرح: 1. `analogRead(A0)` يعطي قيمة رقمية بين 0 و1023. 2. تُطرح منها قيمة الإزاحة (20) لضبط نقطة الصفر أو التعويض عن انحراف في الحساس. 3. النتيجة تُضرب في عامل التحويل (0.488155) ثم تُضاف إلى القيمة الأساسية (-40) للحصول على درجة الحرارة بالسلزيوس. 4. هذه المعادلة خاصة بنوع معين من حساسات درجة الحرارة.

تلميح: هذا الرقم ليس درجة حرارة، بل هو جزء من معادلة المعايرة لجهاز استشعار محدد.

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