Menu
CoddyTech
flag Ar iconالعربيةdown icon

زمن صدى الموجات فوق الصوتية

جزء من قسم الشاشات والمستشعرات في رحلة Arduino على Coddy. الدرس 18 من 24.

يقيس HC-SR04 المسافة مثل الخفاش: يرسل نقرة ترددها أعلى مما يمكننا سماعه، ويقيس زمن الصدى. كلما كان الجسم أبعد، استغرق الصدى وقتًا أطول.

يحتوي على طرفي إشارة. تخبره نبضة قصيرة من TRIG بمستوى HIGH أن يرسل نقرة. ثم يصبح ECHO بمستوى HIGH ويظل كذلك حتى يعود الصدى، لذا فإن مدة نبضة HIGH هذه هي الزمن الذي استغرقه الصوت.

تنتظر delayMicroseconds() أجزاءً من مليون من الثانية، وهي مدة قصيرة بما يكفي لنبضة التشغيل البالغة 10 ميكروثوانٍ. تنتظر pulseIn(pin, HIGH) حتى يصبح الطرف بمستوى HIGH، وتُرجع عدد الميكروثواني التي ظل فيها بمستوى HIGH. إذا لم تصل أي نبضة خلال ثانية، تتوقف وتُرجع 0.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // نبضة التحفيز
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

قد يستمر الصدى حتى 38000 ميكروثانية، وهي مدة أطول مما يمكن أن يستوعبه int، لذا احتفظ به في long.

challenge icon

التحدي

متوسط

يوجد TRIG على المنفذ 9 وECHO على المنفذ 10. في loop():

  • أرسل نبضة HIGH مدتها 10 ميكروثوانٍ على TRIG
  • قِس الصدى باستخدام pulseIn(echoPin, HIGH)
  • اطبع الوقت باستخدام Serial.println()

اضغط على Run، وحرّك الجسم على اللوحة ليقترب ويبتعد، ثم اضغط على Check.

جرّب بنفسك

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // أرسل نبضة مدتها 10 ميكروثوانٍ على TRIG
  // قِس مدة الصدى باستخدام pulseIn() واطبعها
  delay(200);
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الشاشات والمستشعرات

تدرّب بنفسك: Playground لـ Arduino