
قد نحتاج في مشاريعنا إلى قياس المسافات (مثال لكي لا تصدم السيّارة بالحائط).
في هذا الدرس سنتعلّم كيفيّة أستعمال أجهزة الاستشعار بالموجات فوق الصوتية و ربطها بلوحة أردوينو
وظيفة هذه أجهزة الاستشعار بالموجات فوق الصوتية بأن ترسل ذبذبات صوتّة (TRIG)
ثم يتم تلقّيها عند إصطدامها بحاجز (ECHO)
إنطلاقا من المدّة الزمنيّة المستغرقة (ذهاب و إيّاب) و سرعة يمكننا أن تحصّل على المسافة الفاصلة
يحتوي Capteur Ultrason HC SR04 على 4 أقطاب
- VCC: يتمّ ربطه بقطب موجب و بقيمة 5 فولط
- TRIG: لإرسال الذبذبات الصوتيّة
- ECHO: لإستقبال الذبذبات الصوتيّة
- GND: ربطه بقطب سالب
في موقع BlocklyDuino و في مقاطع مختلفة هناك وحدة خاصة Capteur Ultrason المسمّات مجس الموجات فوق الصوتية.
نعيّن المنفذ للإرسال مثال 3 و نعيّن منفذ للإستقبال مثل4

توضع القيمة المستخرجة (بالصنتمتر) في متغيّر
ثمّ حسب القيمة ننجز البرنامج
تمرين
دارة تحتوي على محرّك كهربائي و صمام مشع أحمر وصمام مشع أخضر
إذا كانت المسافة أكثر من 40 صم يشتغل المحرّك و يضيء الصمام المشع الأخضر
إذا كانت المسافة أقل من 40 صم يتوقّف المحرّك عن الدواران و يضيء الصمام المشع الحمر
و في ما يلي الدّارة الكهربائية التاليّة



- إعلان عن متغيّر جديد بإسم Distance و نوعه عشري وقيمته الأصليّة 0
- إرسال و إستقبال الذبذبات الصوتيّة و البحث عن المسافة و وضع القيمة في المتغيّر Distance
- المقارنة المسافة إن كان أكبر من 40 صم
- المنفذ 2 يكون مرتفع (5 فولط) بالتالي صمام المشع الأخضر يضيء
- المنفذ 5 يكون مرتفع (5 فولط) بالتالي المحرّك الكهربائي يشتغل
- المنفذ 3 يكون منخفض (0 فولط) بالتالي صمام المشع االأحمر منطفأ
- المقارنة المسافة إن كان أصغر أو مساوية لـ 40 صم
- المنفذ 3 يكون مرتفع (5 فولط) بالتالي صمام المشع الأحمر يضيء
- المنفذ 12 يكون منخفض (0 فولط) بالتالي المحرّك الكهربائي لا يشتغل
- المنفذ 2 يكون منخفض (0 فولط) بالتالي صمام المشع اخضر منطفأ
هذا الكود للقراءة فقط
float distance; //تعريف بالمتغيّربأن يكون عشري//
long ultrason_11() {//دالة إسمها ultrason من نوع عشري
long duration, distance;//متغيّرات من نوع عشري
digitalWrite(11,LOW);
delayMicroseconds(2);
digitalWrite(11, HIGH);delayMicroseconds(10);
digitalWrite(11, LOW);
duration = pulseIn(10, HIGH);
distance = duration * 340 / (2 * 10000);
return distance;
}
void setup()
{
distance = 0;//تعيين القيمة الأصلية
pinMode(11, OUTPUT);تعريف بالمنفذ لإخراج
pinMode(10, INPUT);تعريف بالمنفذ كإدخال
pinMode(2, OUTPUT);
pinMode(12, OUTPUT);
pinMode(3, OUTPUT);
}
void loop()
{
distance = ultrason_11();
if (distance > 40) {//إذا كانت المسافة أكبر من 40
digitalWrite(2,HIGH);//المنفذ 2 مرتفع
digitalWrite(12,HIGH);//المنفذ 12 مرتفع
digitalWrite(3,LOW);//المنفذ 3 منخفض
}
if (distance <= 40) {إذا كانت المسافة أصغر أو يساويؤ40
digitalWrite(3,HIGH);//المنفذ 3مرتفع
digitalWrite(12,LOW);//المنفذ 12 منخفض
digitalWrite(2,LOW);//المنفذ 2 منخفض
}
}
شاهد هذا الفيديو لأكثر تفاصيل
مشاهدة التمرين على موقع TinKerCad
تمرين عدد 2
ثلاثة صمامات مشعّة لأحمر و برتقالي و أخضر ومجس الموجات فوق الصوتيّة
إذا كانت المسافة أصغر من 25 صم
يضيء الصمام المشع الأحمر و تظهر على الشاشة الحاسوب كلمة Rouge مرفقة بالمسافة مثل هذا الشكل Rouge17
إذا كانت المسافة أكبر أو تساوي 25 صم وأصغر أو تساوي 50صم
يضيء الصمام المشع البرتقالي و تظهر على الشاشة الحاسوب كلمة Orange مرفقة بالمسافة مثل هذا الشكل Orange30
إذا كانت المسافة أكبر من 50 صم
يضيء الصمام المشع الأخضر و تظهر على الشاشة الحاسوب كلمة Verte مرفقة بالمسافة مثل هذا الشكل Verte70
في ما يلي الدّارة الكهربائيّة التالية



- تمّ تعيّن المتغيّر dis كعدد عشري في مقدّمة البرنامج
- في وسط البرنامج يتم إرسال و إستقبال و البحث عن المسافة الفاصلة بين المكوّن والحاجز
- إذا كانت المسافةأكبر من 50 صم .المنفذ رقم 2 سيكون مرتفع و غلق المنافذ 3 و 4 وكتابة اللون المسافة على الشاشة
هذا الكود للقراءة فقطfloat dis;
long ultrason_13() {
long duration, distance;
digitalWrite(13,LOW);
delayMicroseconds(2);
digitalWrite(13, HIGH); delayMicroseconds(10);
digitalWrite(13, LOW);
duration = pulseIn(12, HIGH);
distance = duration * 340 / (2 * 10000);
return distance;
}
void setup()
{
dis = 0;
pinMode(13, OUTPUT);
pinMode(12, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
pinMode(4, OUTPUT);
}
void loop()
{
dis = ultrason_13();
if (dis > 50) {
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(3,LOW);
Serial.println("Vert");
Serial.print(dis);
}
if (dis <= 50 && dis >= 20) {
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
Serial.println(dis);
Serial.print("Orange");
}
if (dis < 25) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
Serial.println(dis);
Serial.print("Rouge");
}
}
يمكتك مشاهدة التمرين على موقع Tinkercad
أي لإستفسار حول هذا الدرس إضغط هنا
هل تعلم
من أنواع الأردوينو نجد Arduino Leonardo
وهي لا تختلف في شيء عن الـ arduino UNO إلا أن شريحة microcontrôleur مثبتة ولا يمكن استبدالها .
والمنفذ الـ USB المستخدم هو micro USB وليس USB typeB مثل السابق.
وسعره أرخص من الـ UNO أيضاً