الدرس السادس :التعرف على مستشعر الموجات فوق الصوتية
السلام عليكم ورحمة الله وبركاته
الدرس السادس : التعرف على مستشعر الموجات فوق الصوتية .
أهداف هذا الدرس :
- معرفة التعامل مع مستشعر الموجات فوق الصوتية .
نبذة بسيطة :
في هذا الدرس سوف نقوم بعمل جهاز يستطيع استشعار المسافات بينه وبين الاجسام التي تكون أمامه
وذلك بواسطة مستشعر الموجات فوق الصوتية ,
إذ كانت المسافة بينه وبين الجسم أقل من 10 سنتيمتر
سوف يضئء اللمبة الحمراء ويصدر صوت تحذيري
أما إذ كانت أكبر من ذلك سوف يضيء اللمبة الخضراء .
وللمعرفة المسافة يمكن الدخول على وضع المراقب التسلسلي بعد رفع الكود للاردوينو .
الدائرة الكهرباية :
آليه عمل حساس الموجات فوق الصوتية (Ultrasonic Sensor) :
يتم إرسال الموجات الصوتية عن طريق منفذ Trig
بعد اصطدام الموجات مع الجسم تنعكس ويتم إستقبلها عبر منفذ Echo
ومن خلال الوقت بين إرسال الموجات ووقت استقبلها يتم حساب المسافة .
ولحساب المسافة نستخدم المعادلة الرياضية التالية :
المسافة = الوقت * السرعة
حيث السرعة تكون ثابته وهي سرعة الصوت 340 متر في الثانية ولكن هنا نحسب الاشارة بـ سنتيمتر وسوف تكون سرعة الصوت تساوي 0.0340 سنتيمتر
ولكن نلاحظ بالصورة ب أن المستشعر سوف يقوم بإرسال وإستقبال إشارة وذلك يسمح بإن تكون قيمة المسافة تتضاعف ونحتاج لتقسيمها على 2
لتصبح المعادلة بالشكل النهائي
المسافة = الوقت *السرعة / 2 .
أقصى حد للمسافة في هذا الحساس هي 4 متر .
الكود البرمجي :
int echoPin =8;
int trigPin =9;
int Led_Red =7;
int Led_Green =6;
int Buzzer=5;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Led_Red, OUTPUT);
pinMode(Led_Green, OUTPUT);
pinMode(Buzzer, OUTPUT);
}
void loop() {
long duration; //المدة
long distance;//المسافة
digitalWrite(trigPin, LOW);
delay(15);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
Serial.print(distance);
Serial.println(" cm");
if (distance < 10) {
digitalWrite(Led_Red,HIGH);
digitalWrite(Buzzer,HIGH);
digitalWrite(Led_Green,LOW);
}
else {
digitalWrite(Led_Red,LOW);
digitalWrite(Buzzer,LOW);
digitalWrite(Led_Green,HIGH);}
delay(500);
}
شرح الكود البرمجي :
لفهم الكود بشكل جيد يمكنك الرجوع إلى الدروس السابقة .
digitalWrite(trigPin, LOW);
delay(10);
digitalWrite(trigPin, HIGH);
delay(15);
في بداية الاستشعار للمسافة نحتاج إلى إرسال موجة قصيرة وذلك لكي يتم تهيئة الاستشعار .
digitalWrite(trigPin, LOW);
هذا الامر لإيقاف تهيئة الاستشعار .
duration = pulseIn(echoPin, HIGH);
الدالة وظيفتها هي حساب مدة الوقت بين إرسال الموجات الصوتية من Trig pin وحتى إنعكاس الموجات وإستقبالها من خلال Echo pin ,
عندما يكون منفذ Echo في حالة HIGH تعني بإن تم إستقبال الاشارة المنعكسة .
distance= duration*0.034/2;
نلاحظ هنا استخدمنا لقانون المسافة لايجادها بوحدة سنتيمتر .
حل تحدي السابق :
التحدي مذكور في هذا المقال
يمكنك تحميل حل التحدي السابق من هنا
تحدي بسيط :
قم بتحويل وحدة المسافة من سنتيسمتر إلى متر .
وإلى هنا نصل إلى نهاية هذا الدرس
ونراكم بالدرس القادم إن شاء الله.
التعليقات (0)
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !