اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء. - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

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

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

الدرس: اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء.

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

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

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

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

📝 ملخص الصفحة

📚 برمجة وميض الدايودات المشعة للضوء

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

منطق الدائرة: الكود البرمجي الذي يتحكم في تشغيل وإيقاف الدايودات المشعة للضوء (LEDs) لجعلها تومض.

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

```markmap

تطبيقات على المتحكمات الدقيقة

إنشاء تطبيق سحابي لإنترنت الأشياء

أهداف التعلم

#### • استخدام البايثون وبروتوكول PyFirmata لبرمجة الأردوينو.

برمجة الأردوينو بالبايثون (pyfirmata)

الخطوات البرمجية الأساسية

#### 1. تثبيت حزمة pyfirmata

##### • الأمر في Terminal: pip install pyfirmata

#### 2. استدعاء المكتبة في الكود

##### • import pyfirmata

#### 3. تحديد منفذ الاتصال

##### • communication_port = "COM4" (يختلف حسب الجهاز)

#### 4. إجراء الاتصال والوصول للأطراف

##### • board = pyfirmata.Arduino(communication_port)

##### • it = pyfirmata.util.Iterator(board)

##### • it.start()

#### 5. استخدام حلقة لا نهائية

##### • while True:

##### • # كتابة الأوامر هنا

ملاحظة تقنية

#### • يشغل البرنامج على الحاسوب، وليس على الأردوينو، مما يتيح الوصول إلى وظائف قد لا تتوفر في جهاز التحكم الدقيق.

الوظيفة الأساسية: board.get_pin()

#### • وظيفتها: قراءة وكتابة القيم للأطراف التناظرية والرقمية.

#### • معاملاتها: ثلاثة أحرف تفصل بينها نقطتان رأسيتان (a:d:5)

##### • المعامل الأول: نوع الطرف

###### • 'a': طرف تناظري (analog)

###### • 'd': طرف رقمي (digital)

##### • المعامل الثاني: رقم الطرف

###### • الأطراف الرقمية: من 0 إلى 12

###### • الأطراف التناظرية: من A0 إلى A5

##### • المعامل الثالث: طريقة التعامل

###### • للأطراف الرقمية:

####### • 'i': input (مدخلات)

####### • 'o': output (مخرجات)

###### • للأطراف التناظرية:

####### • 'i': input (مدخلات)

####### • 'p': Pulse Width Modulation (تضمين عرض النبضة)

تضمين عرض النبضة (PWM)

#### • تعريف: تعديل إشارة رقمية لمحاكاة إشارة تناظرية متغيرة القوة.

#### • دورة العمل (Duty Cycle): النسبة المئوية للزمن الذي تكون فيه الإشارة عالية (5v) خلال فترة زمنية واحدة.

##### • analogWrite(0): 0% دورة عمل (إشارة منخفضة دائمًا)

##### • analogWrite(64): 25% دورة عمل

##### • analogWrite(127): 50% دورة عمل

##### • analogWrite(191): 75% دورة عمل

##### • analogWrite(255): 100% دورة عمل (إشارة عالية دائمًا)

التفاعل مع الأطراف الرقمية

#### • قراءة قيمة من طرف رقمي (مثال: الطرف 10)

##### • digital_pin = board.get_pin("d:10:i")

##### • pin_value = digital_pin.read()

#### • كتابة قيمة إلى طرف رقمي (مثال: الطرف 10)

##### • digital_pin = board.get_pin("d:10:o")

##### • digital_pin.write(1) # قيمة HIGH

##### • digital_pin.write(0) # قيمة LOW

التفاعل مع الأطراف التناظرية

#### • قراءة قيمة من طرف تناظري (مثال: الطرف 4)

##### • analog_pin = board.get_pin("a:4:i")

##### • pin_value = analog_pin.read()

#### • كتابة قيمة إلى طرف تناظري (مثال: الطرف 4)

##### • analog_pin = board.get_pin("a:4:p")

##### • analog_pin.write(0.75)

ملاحظة عامة

#### • يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة.

مشروع تطبيقي: مشروع أردوينو مبسط مع PyFirmata

الهدف

#### • إنشاء مشروع مبسط لاستخدام مكتبة PyFirmata.

#### • برمجة دايود مشع للضوء خارجي وآخر مدمج ليومضا بالتناوب باستخدام بايثون.

خطوات التنفيذ

#### 1. محاكاة الدائرة في Tinkercad Circuits.

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

#### • لوحة أردوينو أونو R3.

#### • لوحة توصيل الدوائر الصغيرة (Breadboard).

#### • دايود مشع للضوء (LED).

#### • مقاومة (Resistor).

تحميل المكونات في Tinkercad

#### 1. البحث عن "لوحة أردوينو أونو R3" في مكتبة المكونات (Components) وسحبها وإفلاتها في مساحة العمل.

#### 2. البحث عن "لوحة توصيل الدوائر الصغيرة" في مكتبة المكونات (Components) وسحبها وإفلاتها في مساحة العمل.

توصيل الأردوينو

#### • الخطوة 1: توصيل طرف GND (الأرضي) للأردوينو بالعمود السالب في لوحة التوصيل، باستخدام سلك أسود.

#### • الخطوة 2: وضع المقاومة (Resistor) من مكتبة المكونات على لوحة التوصيل.

#### • الخطوة 3: توصيل الطرف الرقمي 12 (pin 12) بالطرف 1 (Terminal 1) للمقاومة، باستخدام سلك أحمر.

توصيل الدايود المشع للضوء (LED)

#### 1. البحث عن LED من مكتبة المكونات ووضعه على لوحة التوصيل.

#### 2. توصيل الطرف 2 من المقاومة بالدايود مشع للضوء.

#### 3. توصيل هبوط الدايود المشع للضوء بالعمود السالب في لوحة التوصيل.

الدائرة بشكلها النهائي

#### • يتم عرض الدائرة النهائية في شكلين:

##### • شكل 4.11: يوضح التوصيل الفعلي على لوحة التجارب مع الأردوينو.

##### • شكل 4.12: يوضح الدائرة النهائية في بيئة محاكاة Tinkercad.

الدائرة المادية (Physical Circuit)

#### • شكل 4.13: صورة الدائرة الفعلية

##### • مكونات الدائرة:

###### • دايود مشع للخارج

###### • دايود مشع مدمج

##### • تفاصيل الصورة:

###### • LED أحمر موصل بالطرف الرقمي 13 في الأردوينو.

###### • مقاومة متصلة على التوالي مع الـ LED.

###### • لوحة أردوينو أونو R3.

###### • لوحة توصيل (Breadboard) لتجميع الدائرة.

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

#### • الهدف: برمجة دايودين مشعين (داخلي وخارجي) ليومضا بالتناوب بفارق ثانية.

#### • توصيل الأطراف:

##### • الدايود المشع المدمج: الطرف الرقمي 13.

##### • الدايود المشع الخارجي: الطرف الرقمي 12.

#### • الخوارزمية: تكرار لانهائي لتبادل إشارات التشغيل والإيقاف بين الدايودين كل ثانية.

#### • الكود البرمجي:

##### • استيراد المكتبات:

###### • import pyfirmata

###### • import time

##### • إعداد منفذ الاتصال:

###### • communication_port = 'COM4'

##### • إعداد الاتصال:

###### • board = pyfirmata.Arduino(communication_port)

###### • it = pyfirmata.util.Iterator(board)

###### • it.start()

##### • تعيين الأطراف:

###### • external_led = board.get_pin("d:12:o")

###### • internal_led = board.get_pin("d:13:o")

#### • منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء

##### • while True:

###### • external_led.write(1)

###### • internal_led.write(0)

###### • time.sleep(1)

###### • external_led.write(0)

###### • internal_led.write(1)

###### • time.sleep(1)

```

نقاط مهمة

  • يتم كتابة منطق الدائرة باستخدام حلقة `while True:` لإنشاء تكرار لا نهائي.
  • داخل الحلقة، يتم استخدام الدالة `.write()` لتعيين حالة الدايودات المشعة للضوء (1 = تشغيل / HIGH، 0 = إيقاف / LOW).
  • يتم استخدام `time.sleep(1)` لإنشاء تأخير لمدة ثانية واحدة بين تغيير الحالات، مما يخلق تأثير الوميض.
  • يوضح الشكل 4.15 إرسال إشارة رقمية من الأردوينو إلى الأطراف.

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

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

اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء.

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

اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء.

while True:

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

while True: external_led.write(1) internal_led.write(0) time.sleep(1) external_led.write(0) internal_led.write(1) time.sleep(1)

نوع: FIGURE_REFERENCE

شكل 4.15: إرسال إشارة رقمية من الأردوينو إلى الأطراف

🔍 عناصر مرئية

Arduino Board and LEDs

Diagram showing an Arduino board with two LEDs connected. One LED is red and labeled 'HIGH D12', indicating a high signal on digital pin 12. The other LED is red and labeled 'LOW D12', indicating a low signal on digital pin 12. Arrows indicate the signal flow to and from the LEDs.

Code Snippet

A code block written in Python, likely for an Arduino or similar microcontroller. It contains a 'while True' loop, indicating continuous execution. Inside the loop, it writes digital signals (1 for HIGH, 0 for LOW) to 'external_led' and 'internal_led' with a 1-second delay between state changes, creating a blinking effect.

Laptop with Code

An illustration of a laptop computer with hands typing on the keyboard. The screen displays lines of code, and the Python logo is visible on the screen, indicating the programming language being used. A pink arrow connects the code snippet in the top right to the laptop screen.

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

--- SECTION: اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء. --- اكتب منطق الدائرة لتشغيل وميض الدايودات المشعة للضوء. --- SECTION: while True: --- while True: external_led.write(1) internal_led.write(0) time.sleep(1) external_led.write(0) internal_led.write(1) time.sleep(1) شكل 4.15: إرسال إشارة رقمية من الأردوينو إلى الأطراف --- VISUAL CONTEXT --- **DIAGRAM**: Arduino Board and LEDs Description: Diagram showing an Arduino board with two LEDs connected. One LED is red and labeled 'HIGH D12', indicating a high signal on digital pin 12. The other LED is red and labeled 'LOW D12', indicating a low signal on digital pin 12. Arrows indicate the signal flow to and from the LEDs. Context: Illustrates how digital signals from the Arduino can control LEDs, turning them on (HIGH) or off (LOW). **DIAGRAM**: Code Snippet Description: A code block written in Python, likely for an Arduino or similar microcontroller. It contains a 'while True' loop, indicating continuous execution. Inside the loop, it writes digital signals (1 for HIGH, 0 for LOW) to 'external_led' and 'internal_led' with a 1-second delay between state changes, creating a blinking effect. Context: Provides the code logic for making LEDs blink, demonstrating basic programming for controlling hardware outputs. **DIAGRAM**: Laptop with Code Description: An illustration of a laptop computer with hands typing on the keyboard. The screen displays lines of code, and the Python logo is visible on the screen, indicating the programming language being used. A pink arrow connects the code snippet in the top right to the laptop screen. Context: Represents the environment where the code is written and potentially uploaded to the Arduino, linking the programming concept to a practical tool.

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

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

ما الوظيفة الأساسية لدالة `time.sleep(1)` في كود وميض الـ LED بالأردوينو؟

  • أ) تسريع معالج الأردوينو لمدة ثانية.
  • ب) إيقاف تنفيذ البرنامج لمدة ثانية واحدة قبل تنفيذ الأمر التالي.
  • ج) تشغيل صوت تنبيه لمدة ثانية.
  • د) إعادة تشغيل حلقة `while` من البداية.

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

الإجابة: إيقاف تنفيذ البرنامج لمدة ثانية واحدة قبل تنفيذ الأمر التالي.

الشرح: 1. `time.sleep()` هي دالة في وحدة `time` بلغة Python. 2. تأخذ الدالة رقمًا يمثل عدد الثواني. 3. `time.sleep(1)` توقف البرنامج لمدة ثانية واحدة. 4. هذا يخلق تأخيرًا زمنيًا بين تغيير حالات الـ LED، مما ينتج عنه وميض مرئي.

تلميح: فكر في كيفية التحكم في سرعة وميض الـ LED.

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

ما الغرض من استخدام حلقة `while True:` في برمجة الأردوينو للتحكم في الدايودات المشعة للضوء (LEDs)؟

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

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

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

الشرح: 1. `while` هي عبارة تكرار شرطية. 2. الشرط `True` يعني أن الشرط صحيح دائمًا. 3. لذلك، سيتم تنفيذ الأوامر داخل الحلقة (كتابة إشارات HIGH/LOW وتأخير زمني) بشكل مستمر، مما يخلق تأثير الوميض.

تلميح: فكر في الحاجة إلى استمرارية تشغيل وإطفاء الـ LED دون توقف.

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

في سياق برمجة الأردوينو بلغة Python، ماذا يمثل الرقم `1` عند استخدامه مع دالة `write()` للتحكم في دايود مشع للضوء (LED)؟

  • أ) يمثل إشارة رقمية منخفضة (LOW) لإطفاء الـ LED.
  • ب) يمثل إشارة تماثلية بقيمة 1 فولت.
  • ج) يمثل إشارة رقمية عالية (HIGH) لتشغيل الـ LED.
  • د) يمثل أمرًا لحذف الإعدادات السابقة.

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

الإجابة: يمثل إشارة رقمية عالية (HIGH) لتشغيل الـ LED.

الشرح: 1. تستخدم دالة `write()` لإرسال إشارة رقمية إلى طرف (Pin). 2. في السياق الرقمي، القيمة `1` تعادل الجهد العالي (HIGH). 3. عند تطبيق الجهد العالي (HIGH) على طرف متصل بـ LED، يمر تيار كهربائي فيشع الضوء.

تلميح: تذكر أن الإشارات الرقمية في الأردوينو لها حالتان أساسيتان.

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

في مثال كود وميض LED، إذا كانت حالة `external_led` هي HIGH (1) و `internal_led` هي LOW (0)، فما الذي سيحدث بعد تنفيذ `time.sleep(1)` مباشرة؟

  • أ) ستبقى الحالتان كما هما دون تغيير.
  • ب) سيتم إطفاء كلا الـ LED.
  • ج) سيتم عكس الحالتين، فتصبح `external_led` LOW (0) و `internal_led` HIGH (1).
  • د) سيتم تشغيل كلا الـ LED.

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

الإجابة: سيتم عكس الحالتين، فتصبح `external_led` LOW (0) و `internal_led` HIGH (1).

الشرح: 1. يبدأ الكود بـ `external_led.write(1)` (تشغيل) و `internal_led.write(0)` (إطفاء). 2. ينتظر ثانية `time.sleep(1)`. 3. الأمر التالي هو `external_led.write(0)` (إطفاء). 4. ثم `internal_led.write(1)` (تشغيل). 5. النتيجة: يتم تبديل حالتي التشغيل والإطفاء بين الـ LED الخارجي والداخلي.

تلميح: تتبع تسلسل الأوامر داخل حلقة `while True`.

التصنيف: تفكير ناقد | المستوى: متوسط