سؤال 4: ارسم مخطط ++C للأردوينو يستخدم الدالة في التمرين الأول ويقرأ مدخل إشارة تناظري. ثم أنشئ تكرار for يستخدم الدالة في التمرين الأول لتضخيم الإشارة الأصلية 5 مرات، وفي كل مرة تُضخم الإشارة، تُرسل إلى طرف كمخرج تناظري.
الإجابة: س:4: (1) ابدأ (2) تهيئة المتغيرات (A0, PWM, الدالة) (3) setup: تعيين طرف الخرج (4) loop: قراءة A0، ثم تكرار for (5 مرات): استدعاء الدالة وتضخيم الإشارة وإرسالها للخرج.
خطوات الحل:
- **الخطوة 1 (فهم المطلوب):** لنفهم هذا السؤال. المطلوب هو كتابة برنامج بلغة ++C للأردوينو يقوم بمهمتين رئيسيتين: 1. قراءة إشارة تناظرية من مدخل معين. 2. تضخيم هذه الإشارة 5 مرات باستخدام حلقة تكرار وإرسال النتيجة إلى مخرج تناظري في كل مرة.
- **الخطوة 2 (تحديد المكونات الأساسية):** لنحدد ما نحتاجه: - دالة التضخيم من التمرين الأول (لنفترض اسمها `amplifySignal`). - مدخل تناظري للقراءة (مثل `A0`). - مخرج تناظري للإرسال (مثل `PWM` على طرف رقمي يدعم ذلك، مثل `D3`). - متغير لتخزين قيمة الإشارة المقروءة. - حلقة `for` للتكرار 5 مرات.
- **الخطوة 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 (النتيجة):** إذن، مخطط البرنامج هو: 1. **التهيئة (`setup`)**: تعيين طرف كمخرج تناظري. 2. **الحلقة الرئيسية (`loop`)**: - قراءة الإشارة من `A0`. - استخدام `for` للتكرار 5 مرات. - في كل تكرار: استدعاء دالة التضخيم، ثم إرسال الناتج إلى المخرج التناظري. هذا يضمن تنفيذ المطلوب بتضخيم الإشارة 5 مرات وإرسالها في كل مرة.