زمن صدى الموجات فوق الصوتية
جزء من قسم الشاشات والمستشعرات في رحلة 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.
التحدي
متوسطيوجد 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);
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الشاشات والمستشعرات
1شاشات العرض ذات الأجزاء السبعة
شاشة العرض ذات الأجزاء السبعةأنماط الأرقام في البايتاتالعدّ على الشاشةالعدّ التنازلي حتى الصفرمحاكي رمي النرد4المستشعرات
زمن صدى الموجات فوق الصوتيةتحويل زمن الصدى إلى سنتيمتراتدرجة حرارة الثرمستورالتحويل من سلسيوس إلى فهرنهايتشريط مستوى الضوءالمسافة على شاشة LCDمقياس حرارة LCDتدرّب بنفسك: Playground لـ Arduino