الحسّاسات والمشغّلات للمتحكّمات · الفصل 7 — المسافة والحضور والحركةמרחק, נוכחות ותנועה · 33.102⌂📚🏠
الفصل 7

المسافة والحضور والحركة

מרחק, נוכחות ותנועה
الصفّان الحادي عشر والثاني عشر · 5 ساعات تعليمية

يحتاج نظام التحكّم كثيرا إلى أجوبة عن أسئلة بسيطة: كم يبعد الجسم عنّا؟ هل دخل أحد إلى الغرفة؟ في هذا الفصل نتعرّف على حسّاسين يجيبان عن هذين السؤالين: الحسّاس فوق الصوتي وحسّاس الحركة. لكل حسّاس نرسم التوصيل، نكتب برنامجا كاملا مُرّ بالترجمة، ونحسب ما سنقرؤه على الشاشة التسلسلية. وفي آخر الفصل نلقي نظرة سريعة على حسّاسات أخرى للمسافة والحركة.

في نهاية هذا الفصل سنعرف أن:
  • نفهم كيف يقيس الحسّاس فوق الصوتي المسافة من زمن الصدى، ونحسبها حسب d = v·t2 وبالاختصار d ≈ t58.
  • نوصل الوحدة HC-SR04 بالمتحكّم ونقيس عرض النبضة بالأمر pulseIn() مع مهلة انتظار.
  • نبني نظام مساعدة الركن: طنّان يصفّر أسرع كلما اقترب الجسم.
  • نوصل حسّاس الحركة HC-SR501 ونشغّل مصباحا لمدّة محدّدة بعد آخر حركة بواسطة millis().
  • نقارن بين حسّاسات المسافة والحركة: ماذا يقيس كل منها، ما مداه، وهل مخرجه تماثلي أم رقمي.

חיישן מרחק על-קולי – الحسّاس فوق الصوتي HC-SR04 (Ultrasonic Distance Sensor)

HC-SR04
الحسّاس فوق الصوتي (חיישן על-קולי): حسّاس يرسل نبضة صوتية بتردد أعلى من مجال السمع (فوق نحو 20 kHz)، ويقيس الزمن حتى يعود الصدى (הד) المرتدّ عن الجسم. الحسّاس لا يقيس المسافة مباشرة، بل يقيس زمنا، ومن الزمن نحسب المسافة.
TRالنبضة المرسلةالصدىdHC-SR04جسم
المرسِل T يطلق النبضة والمستقبِل R يلتقط الصدى

الصوت يذهب إلى الجسم ثم يعود منه، فالطريق الذي يقطعه هو 2·d ، ولذلك نقسم على 2 في القانون التالي. سرعة الصوت في الهواء نحو 343 m/s عند 20 °C. وهي تتغيّر قليلا مع درجة حرارة الهواء، لكن التغيّر صغير في مشاريعنا، فنعدّها ثابتة.

المسافة بطريقة الصدى · מדידת מרחק בשיטת ההד
d = v·t2
الرمزالمعنىوحدة القياس
dالمسافة بين الحسّاس والجسم[m]
tزمن الذهاب والإياب، وهو عرض النبضة على الطرف ECHO[s]
vسرعة الصوت في الهواء، نحو 343 m/s[m/s]

من أين يأتي العدد 58؟ الحسّاس يعطينا الزمن بالميكروثانية، ونريد المسافة بالسنتيمتر. نكتب السرعة بهذه الوحدات، 343 m/s = 0.0343 cm/µs ، ونعوّض في القانون:

d = 0.0343·t2 = t58.31 → d[cm] ≈ t[µs]58

أي أن الصوت يحتاج نحو 58 µs ليذهب سنتيمترا واحدا ويعود.

مثال 7.1
عرض النبضة على ECHO هو 1750 µs. نحسب المسافة بالقانون وبالاختصار.
الحل:
d = v·t2 = 343 · 1750·10−62 = 0.3001 m
d ≈ t58 = 175058 = 30.2 cm

الفرق بين الطريقتين 0.2 cm فقط، لأن 58 قريب جدا من 58.31.

d ≈ 30 cm

الوحدة HC-SR04: الأطراف وطريقة العمل – המודול HC-SR04: הדקים ואופן הפעולה:

الخاصيةالقيمة
التغذية5 V و 15 mA
تردد الموجة40 kHz
مدى القياسمن 2 cm إلى 4 m
زاوية القياسنحو 15°
نبضة القدحt ≥ 10 µs
بين قياسينt ≥ 60 ms

الحسّاس رقمي: له مدخل ومخرج رقميان فقط. المتحكّم يرفع TRIG مدّة 10 µs، وهذه نبضة القدح (פולס הדק). عندها ترسل الوحدة رشقة من 8 دورات بتردد 40 kHz وترفع ECHO، وتخفضه عندما يصل الصدى. عرض النبضة (רוחב הפולס) على ECHO هو الزمن t. القيم في الجدول «قيمة نموذجية حسب ورقة البيانات»، وقد تختلف قليلا بين الصانعين.

TRIG40 kHzECHO10 µs8 × 40 kHztوصل الصدىمن المتحكّم إلى الحسّاسمن الحسّاس إلى المتحكّم: العرض = زمن الذهاب والإياب
المخطّط الزمني للوحدة HC-SR04 (ليس بمقياس رسم)
Arduino Uno5VD9D10GNDHC-SR04VCCTRIGECHOGND
TRIG إلى D9 و ECHO إلى D10

لقياس عرض النبضة نستعمل pulseIn(): ينتظر حتى يرتفع الطرف ثم يعيد مدّة بقائه مرتفعا بالميكروثانية. الوسيط الثالث 30000UL هو مهلة الانتظار (זמן המתנה מרבי): إذا لم تصل نبضة خلال 30 ms يعيد 0. هذه المهلة تكفي لمسافة حتى 514 cm ، أي أكثر من مدى الحسّاس.

قياس المسافة بالحسّاس فوق الصوتي Arduino Uno · hcsr04_distance.ino
const int TRIG = 9;
const int ECHO = 10;
const float V = 0.0343;                  // speed of sound: 343 m/s = 0.0343 cm/us

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}

void loop() {
  digitalWrite(TRIG, HIGH);                // 10 us trigger pulse
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  unsigned long t = pulseIn(ECHO, HIGH, 30000UL);   // 0 = timeout
  Serial.print("t = "); Serial.print(t);
  if (t == 0) {
    Serial.println(" us  no echo");
  } else {
    Serial.print(" us  d = "); Serial.print(V * t / 2, 1);
    Serial.println(" cm");
  }
  delay(100);
}
Serial Monitor · قراءة نموذجية
t = 583 us  d = 10.0 cm
t = 2915 us  d = 50.0 cm
t = 5831 us  d = 100.0 cm
t = 11662 us  d = 200.0 cm
t = 0 us  no echo

القراءة النموذجية لأجسام على بعد 10، 50، 100، 200 سنتيمترا، والسطر الأخير بلا جسم: لم يعد صدى فأعاد pulseIn القيمة 0.

سؤال 7.1: عرض النبضة على ECHO هو 2900 µs.
أ. نحسب المسافة بالقانون.
ب. نحسبها بالاختصار.
خطأ شائع: pulseIn بدون مهلة انتظار ينتظر حتى ثانية كاملة عندما لا يعود صدى، فيبدو البرنامج عالقا. وخطأ ثانٍ: ننسى القسمة على 2 فنحصل على ضعف المسافة. والأسطح الليّنة أو المائلة قد لا تعيد صدى أبدا.
تحذير: الطرف ECHO يُخرج 5 V. مع ESP32 (أطرافه 3.3 V) نضع مُجزِّء جهد صغيرا: 1 kΩ على التوالي و 2 kΩ إلى الأرضي، فيصل إلى الطرف نحو 3.3 V فقط.
على اللوحات الثلاث: Uno: مباشرة. ESP32 والراسبيري باي: نغذّي الحسّاس من 5 V ، ونصل TRIG مباشرة (3.3 V تكفي لإطلاق النبضة)، أما ECHO فيُخرج 5 V فنصله عبر مُجزِّء جهد (الفصل 3).
▶تجربة حية — حسّاس المسافة HC-SR04مخطط التوصيل، برنامج لـ Arduino و ESP32، والفخّان الشائعان: مهلة الانتظار ومُجزِّء الجهد على ECHO.
⚠
المختبر غير متاح الآن. المادة في هذا الفصل كاملة من دونه — نواصل القراءة، ونعود إلى التجربة لاحقا أو نفتحها مباشرة من الرابط الذي تحت الإطار.
https://fahed-lab.com/micro/sensors_guide#hcsr04
نفتح المختبر في صفحة مستقلة ↗ fahed-lab.com/micro/sensors_guide#hcsr04

מערכת עזר לחניה – مثال تطبيقي: نظام مساعدة الركن (Parking Assist)

الحسّاس فوق الصوتي يقيس المسافة إلى الحائط، والطنّان (זמזם) يصفّر أسرع كلما اقتربت السيارة. نقسم المسافة إلى أربع مناطق، ونضيف طنّانا سلبيا بين D8 والأرضي. الأمر tone(BUZZ, 2000, 60) يُخرج موجة مربّعة بتردد 2000 Hz مدّة 60 ms ثم يتوقف وحده. بدل delay طويل بين الصفّارات نقارن millis() بوقت الصفّارة السابقة، فيبقى القياس سريعا.

المنطقةالمسافةالطنّان
0أكثر من 100 cmصامت
1من 50 إلى 100 cmكل 500 ms
2من 25 إلى 50 cmكل 200 ms
325 cm أو أقلمتواصل: قف!
Arduino Uno5VD9D10GNDD8HC-SR04VCCTRIGECHOGND+طنّان سلبي
نظام مساعدة الركن: المسافة تحدّد المنطقة، والمنطقة تحدّد إيقاع الطنّان Arduino Uno · parking_assist.ino
const int TRIG = 9, ECHO = 10, BUZZ = 8;   // BUZZ: passive buzzer
const unsigned int GAP[] = {0, 500, 200, 0};   // ms between beeps
unsigned long lastBeep = 0;

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}

void loop() {
  digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW);
  unsigned long t = pulseIn(ECHO, HIGH, 30000UL);
  float d = (t == 0) ? 999.0 : t / 58.0;   // no echo = far away
  int z = (d > 100) ? 0 : (d > 50) ? 1 : (d > 25) ? 2 : 3;
  if (z == 0) noTone(BUZZ);
  else if (z == 3) tone(BUZZ, 2000);       // stop: continuous tone
  else if (millis() - lastBeep >= GAP[z]) {
    tone(BUZZ, 2000, 60);                  // short beep
    lastBeep = millis();
  }
  Serial.print("d = "); Serial.print(d, 1);
  Serial.print(" cm  zone "); Serial.println(z);
  delay(60);
}
Serial Monitor · قراءة نموذجية
d = 999.0 cm  zone 0
d = 150.8 cm  zone 0
d = 90.5 cm  zone 1
d = 40.2 cm  zone 2
d = 12.1 cm  zone 3

سيارة تقترب من الحائط، والسطر الأول بلا صدى. المسافة المعروضة أكبر قليلا من الحقيقية: 150.8 cm لجسم على بعد 150 cm ، لأن البرنامج يقسم على 58 بدل 58.31. حدود المناطق بزمن الصدى: t = 58·d ، أي 5800 ، 2900 و 1450 µs.

سؤال 7.2: عرض النبضة 2030 µs. ما المسافة التي يعرضها البرنامج، وفي أيّ منطقة نحن؟
ملاحظة: الطنّان السلبي يأخذ موجة من المتحكّم ويستهلك تيارا صغيرا. طنّانا يستهلك تيارا أكبر من المسموح للطرف نشغّله عبر ترانزستور كمفتاح (الفصل 10).

חיישן תנועה PIR – حسّاس الحركة بالأشعة تحت الحمراء HC-SR501 (PIR Motion Sensor)

HC-SR501
حسّاس الحركة بالأشعة تحت الحمراء (חיישן תנועה PIR): حسّاس سلبي (פסיבי): لا يرسل شيئا، بل يستقبل الأشعة تحت الحمراء التي تُطلقها الأجسام الدافئة، ويُخرج إشارة رقمية عندما تتغيّر كمية هذه الأشعة. اسمه PIR اختصار لـ Passive InfraRed.

في داخله عنصر كهروحراري (פירואלקטרי) له نصفان، وفوقه قبّة بيضاء هي عدسة فرينل (עדשת פרנל) تقسم مجال الرؤية إلى قطاعات. عندما يعبر إنسان من قطاع إلى قطاع يصل إلى النصفين إشعاع مختلف فيرتفع المخرج. لذلك الإنسان الجالس بلا حراك «يختفي» بعد قليل: الحسّاس يكشف التغيّر وليس الوجود.

الخاصيةالقيمة في HC-SR501 («قيمة نموذجية حسب ورقة البيانات»)
جهد التغذيةمن 4.5 V إلى 20 V
المخرجرقمي: 3.3 V عند الحركة، 0 V بدونها
مدى الكشفحتى نحو 7 m ، ويُضبط بالمقاومة المتغيّرة Sx
زاوية الكشفمخروط أقل من 120°
زمن الإمساك Tx (זמן השהיה)يُضبط بالمقاومة المتغيّرة Tx: من ثوانٍ قليلة إلى بضع دقائق
زمن التسخين بعد التشغيلحتى نحو دقيقة

على الوحدة أيضا جسر صغير لاختيار وضع إعادة القدح (מצב הפעלה חוזרת). في الوضع H تبدأ كل حركة جديدة زمن الإمساك من البداية، فيبقى المخرج مرتفعا ما دامت الحركة مستمرة. في الوضع L ينخفض المخرج بعد Tx حتى لو استمرت الحركة. القيم تختلف قليلا بين نُسخ الوحدة.

حركةHLTxTx
مخرج الحسّاس للحركات نفسها في الوضعين H و L (رسم نوعي)
Arduino Uno5VD2GNDD7HC-SR501VCCOUTGND330 ΩLED
OUT إلى D2، ومصباح بيان على D7؛ الأرضي مشترك

مخرج الحسّاس 3.3 V والمتحكّم يُغذّى بـ 5 V. حسب ورقة بيانات ATmega328P يُقرأ الطرف HIGH ابتداءً من نحو 3 V ، و 3.3 V أكبر من ذلك، فنوصل المخرج مباشرة بالطرف D2 (وهذا آمن أيضا لـ ESP32). مصباح البيان على D7 ومعه مقاومة 330 Ω على التوالي، فيمرّ فيه تيار نحو 9 mA.

نريد أن يُضيء المصباح عند الحركة ويبقى مضاءً 30 s بعد آخر حركة. نضبط الوحدة على الوضع H وعلى أقصر Tx ، ونترك حساب المدّة للبرنامج: نحفظ في lastMotion وقت آخر قراءة HIGH ، ونطفئ عندما يمرّ 30 s منذ ذلك الوقت.

مصباح يبقى مضاءً 30 ثانية بعد آخر حركة Arduino Uno · pir_light.ino
const int PIR = 2, LAMP = 7;
const unsigned long HOLD = 30000UL;        // ms after the last motion
unsigned long lastMotion = 0;
bool lampOn = false;
void report(const char *msg) {
  Serial.print("t = "); Serial.print(millis() / 1000.0, 1);
  Serial.print(" s  "); Serial.println(msg);
}
void setup() {
  Serial.begin(9600);
  pinMode(PIR, INPUT); pinMode(LAMP, OUTPUT);
  delay(60000UL);                          // PIR warm-up
  Serial.println("ready");
}
void loop() {
  unsigned long now = millis();
  if (digitalRead(PIR) == HIGH) {
    lastMotion = now;                      // motion: restart the timer
    if (!lampOn) {
      lampOn = true; digitalWrite(LAMP, HIGH); report("lamp ON");
    }
  }
  if (lampOn && now - lastMotion >= HOLD) {
    lampOn = false; digitalWrite(LAMP, LOW); report("lamp OFF");
  }
}
Serial Monitor · قراءة نموذجية
ready
t = 65.2 s  lamp ON
t = 114.7 s  lamp OFF
t = 152.3 s  lamp ON
t = 185.1 s  lamp OFF
مثال 7.2
القراءة النموذجية محسوبة لمخرج حسّاس كان مرتفعا في الفترات: من 65.2 إلى 68.4 s، من 81 إلى 84.7 s، من 152.3 إلى 155.1 s. متى ينطفئ المصباح أوّل مرّة؟ ولماذا لم ينطفئ بين الحركة الأولى والثانية؟
الحل:

آخر قراءة HIGH في الحركة الأولى عند 68.4 s ، والحركة الثانية بدأت عند 81 s:

81 − 68.4 = 12.6 s < 30 s

فبقي المصباح مضاءً، والحركة الثانية بدأت العدّ من جديد. آخر قراءة HIGH فيها عند 84.7 s:

toff = 84.7 + 30 = 114.7 s
toff = 114.7 s
سؤال 7.3: غيّرنا HOLD إلى 45 s. متى ينطفئ المصباح بعد الحركة الثالثة؟ وما قيمة الثابت في البرنامج؟
خطأ شائع: في الدقيقة الأولى بعد التشغيل يستقرّ الحسّاس ويُخرج إشارات كاذبة، فمن يفحص فورا يظن أن الحسّاس معطوب؛ لذلك ننتظر 60 s في setup(). وخطأ ثانٍ: delay(30000) بدل millis() يُعمي البرنامج عن الحركات أثناء الانتظار. ونكتب المقارنة بالطرح now - lastMotion لأنها تبقى صحيحة حتى عندما يعود millis() إلى الصفر بعد 232 ms ، أي نحو 49.7 يوما.
تحذير: لتشغيل مصباح شبكة 230 V نستعمل فقط وحدة مرحّل مصادقا عليها، بإشراف المعلّم، ولا نوصل جهد الشبكة أبدا على لوحة التجارب. هنا نكتفي بمصباح بيان؛ تشغيل الأحمال بالمرحّل في الفصل 10.
على اللوحات الثلاث: يتّصل مباشرة باللوحات الثلاث: نغذّيه من 5 V ، ومخرجه 3.3 V حتى عندما يتغذّى من 5 V ، فهو آمن لأطراف ESP32 والراسبيري باي.
▶تجربة حية — حسّاس الحركة PIRمواصفات HC-SR501، التوصيل، وبرنامج يتجاهل فترة التسخين ويُبلغ عن بداية الحركة ونهايتها.
⚠
المختبر غير متاح الآن. المادة في هذا الفصل كاملة من دونه — نواصل القراءة، ونعود إلى التجربة لاحقا أو نفتحها مباشرة من الرابط الذي تحت الإطار.
https://fahed-lab.com/micro/sensors_guide#pir
نفتح المختبر في صفحة مستقلة ↗ fahed-lab.com/micro/sensors_guide#pir

חיישני מרחק ותנועה נוספים – حسّاسات أخرى للمسافة والحركة (Other Distance and Motion Sensors)

إلى جانب الحسّاس فوق الصوتي وحسّاس الحركة نلتقي في المشاريع بحسّاسات أخرى للمسافة والحركة. لا نتوسّع فيها في هذا الكتاب، لكن من المفيد أن نعرف ماذا يقيس كل منها، ما مداه، ما نوع مخرجه، وأين يُستعمل. الجدول يقارن بينها وبين الحسّاسين اللذين تعلّمناهما:

الحسّاسماذا يقيس؟المدى النموذجيالمخرجاستعمال نموذجي
فوق صوتي HC-SR04المسافة من زمن الصدىمن 2 cm إلى 4 mنبضة رقمية على ECHOمساعدة الركن، مستوى سائل
حسّاس الحركة HC-SR501تغيّر الأشعة الحرارية: حركة إنسانحتى نحو 7 mرقمي: نعم / لاإضاءة الدرج، إنذار
حسّاس المسافة بالأشعة تحت الحمراء (Sharp GP2Y0A21)المسافة من موضع الضوء المنعكس عن الجسممن 10 cm إلى 80 cmجهد تماثلي، والعلاقة غير خطّيةروبوت يتجنّب العوائق
المرمِّز الدوّار (KY-040)زاوية دوران المحور واتجاههدوران بلا حدّ، 20 نبضة في الدورةنبضات رقمية على قناتين A و Bمقبض قائمة أو صوت، موضع محور محرّك
مقياس التسارع (MPU6050)التسارع وميل الجهاز عن الأفقمن ±2 g حتى ±16 gرقمي عبر ناقل البيانات I2Cكشف الميل، روبوت متوازن، عدّ الخطوات
ملاحظة: القيم في الجدول «قيمة نموذجية حسب ورقة البيانات». عند الاختيار نسأل أوّلا: ماذا نريد أن نعرف (مسافة، وجود، دوران، ميل)؟ ثم: هل يناسبنا مخرج رقمي نقرؤه بـ digitalRead() أو pulseIn()، أم مخرج تماثلي نقرؤه بـ analogRead()؟
سؤال 7.4: أيّ حسّاس في الجدول نقرؤه بالأمر analogRead()؟ وأيّها يُخرج نبضات على قناتين؟

ملخّص قوانين الفصل:

القانونالصيغة
المسافة بطريقة الصدىd = v·t2
الاختصار (v = 343 m/s)d[cm] ≈ t[µs]58
زمن الصدى لمسافة معلومةt[µs] ≈ 58·d[cm]

قاموس المصطلحات – מילון מונחים:

بالعربيةبالعبرية (كما تظهر في الامتحان)English
الحسّاس فوق الصوتيחיישן על-קוליUltrasonic sensor
الصدىהדEcho
سرعة الصوتמהירות הקולSpeed of sound
نبضة القدحפולס הדק (טריגר)Trigger pulse
عرض النبضةרוחב הפולסPulse width
مهلة الانتظارזמן המתנה מרביTimeout
الطنّان (البازر)זמזםBuzzer
حسّاس الحركة بالأشعة تحت الحمراءחיישן תנועה (PIR)Passive infrared sensor
حسّاس سلبيחיישן סביל (פסיבי)Passive sensor
العنصر الكهروحراريגביש פירואלקטריPyroelectric element
عدسة فرينلעדשת פרנלFresnel lens
زمن الإمساكזמן השהיהHold (delay) time
وضع إعادة القدحמצב הפעלה חוזרתRetrigger mode
حسّاس المسافة بالأشعة تحت الحمراءחיישן מרחק אינפרא-אדוםIR distance sensor
المرمِّز الدوّارמקודד סיבוביRotary encoder
مقياس التسارعמד תאוצהAccelerometer

أسئلة للتمرين:

1.
عرض النبضة على ECHO هو 2320 µs.
أ. نحسب المسافة بالقانون.
ب. نحسبها بالاختصار.
الإجابات: أ. d = 39.8 cm · ب. d ≈ 40 cm
2.
جسم على بعد 1.5 m من الحسّاس. نحسب عرض النبضة المتوقّع على ECHO.
الإجابات: t = 8746 µs
3.
أ. ما أقصر مهلة انتظار تكفي لقياس 400 cm؟
ب. برنامج يستعمل مهلة 10000 µs: ما أبعد مسافة يقيسها؟
الإجابات: أ. 23324 µs · ب. نحو 172 cm
4.
لماذا نقسم على 2 في قانون المسافة؟ وماذا يعيد pulseIn() عندما لا يعود صدى؟
الإجابات: لأن الصوت يقطع الطريق ذهابا وإيابا (2·d)؛ يعيد 0 بعد انتهاء مهلة الانتظار
5.
في نظام مساعدة الركن نقرأ أعراض النبضات 3500 ، 2000 ، 1000 و 2600 µs. نحدّد المنطقة لكل قراءة.
الإجابات: 3500 µs: المنطقة 1 · 2000 µs: المنطقة 2 · 1000 µs: المنطقة 3 · 2600 µs: المنطقة 2
6.
لماذا لا يكشف حسّاس PIR إنسانا يجلس بلا حراك أمام الحاسوب؟ وماذا يحدث في الوضع L ونحن نتحرّك بلا توقّف؟
الإجابات: لأنه يكشف تغيّر الأشعة لا وجودها؛ في الوضع L ينخفض المخرج بعد Tx رغم الحركة ثم يرتفع من جديد
7.
في برنامج المصباح غيّرنا HOLD إلى 20 s. مخرج الحسّاس كان مرتفعا من 10.0 إلى 12.5 s ومن 40.0 إلى 41.0 s. متى ينطفئ المصباح أوّل مرّة؟ متى يضيء من جديد ومتى ينطفئ؟
الإجابات: ينطفئ عند 32.5 s ، يضيء عند 40 s وينطفئ عند 61 s
8.
نريد توصيل HC-SR04 بلوحة ESP32. ما المشكلة في الطرف ECHO، وكيف نحلّها؟
الإجابات: ECHO يُخرج 5 V وأطراف ESP32 تتحمّل 3.3 V فقط؛ نضع مُجزِّء جهد 1 kΩ و 2 kΩ فيصل نحو 3.3 V
9.
أيّ حسّاس نختار؟
أ. قياس مستوى الماء في خزّان من أعلاه.
ب. إضاءة الدرج عندما يصعد إنسان.
ج. مقبض نديره في الاتجاهين لاختيار بند في قائمة.
د. كشف ميل منصّة عن الأفق.
الإجابات: أ. فوق صوتي. ب. حسّاس الحركة PIR. ج. المرمِّز الدوّار. د. مقياس التسارع
10.
لكل حسّاس نكتب: هل مخرجه رقمي أم تماثلي، وبأيّ أمر نقرؤه؟
أ. HC-SR04.
ب. HC-SR501.
ج. حسّاس المسافة Sharp.
الإجابات: أ. رقمي، pulseIn() · ب. رقمي، digitalRead() · ج. تماثلي، analogRead()
الإجابات النهائية لأسئلة الفصل
7.1 أ. d = 49.7 cm · ب. d ≈ 50 cm
7.2 d = 35.0 cm ، المنطقة 2
7.3 toff = 200.1 s ، والثابت 45000UL
7.4 حسّاس المسافة بالأشعة تحت الحمراء (Sharp)؛ المرمِّز الدوّار
لوحة القوانين: كل قوانين هذا الفصل مجموعة مع رسومها وجداول رموزها في الفصل 15 — لوحة القوانين الشاملة. (נוסחאון הספר)