// استخدام لوحة الأردوينو لتوصيل حساس الموجات فوق الصوتية وجرس
// ليعطي صوتاً بناءً على المسافة المقاسة بواسطة الحساس
// إعداد المهندس/ أحمد درويش
// تعريف الأطراف المستخدمة
const int triggerPin = A4; // الطرف المخصص لإرسال الإشارة
const int echoPin = A5; // الطرف المخصص لاستقبال الإشارة
const int buzzer = 2; // الطرف المخصص لتوصيل الجرس
// تعريف دالة قياس المسافة باستخدام الحساس
long readUltrasonicDistance(int triggerPin, int echoPin) {
pinMode(triggerPin, OUTPUT); // ضبط الطرف المخصص للإرسال كخرج
digitalWrite(triggerPin, LOW); // التأكد من أن الإشارة منخفضة
delayMicroseconds(2); // الانتظار لمدة قصيرة
digitalWrite(triggerPin, HIGH); // إرسال إشارة عالية لمدة 10 ميكروثانية
delayMicroseconds(10);
digitalWrite(triggerPin, LOW); // إعادة الإشارة لمنخفضة
pinMode(echoPin, INPUT); // ضبط الطرف المخصص للاستقبال كمدخل
return pulseIn(echoPin, HIGH); // حساب مدة عودة الإشارة وإرجاعها
}
// إعداد البيئة الأولية للمشروع
void setup() {
pinMode(buzzer, OUTPUT); // إعداد الجرس كخرج
Serial.begin(9600); // تهيئة الاتصال التسلسلي لعرض النتائج
}
// الحلقة الرئيسية
void loop() {
// قراءة المسافة باستخدام حساس الموجات فوق الصوتية
long duration = readUltrasonicDistance(triggerPin, echoPin); // الزمن الذي استغرقته الإشارة
float distance = duration * 0.01723; // تحويل الزمن إلى مسافة بالسنتيمتر
// طباعة المسافة على Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// تشغيل الجرس إذا كانت المسافة أقل من 20 سم
if (distance < 100) {
tone(buzzer, 2000); // تشغيل الجرس بتردد 2000 هرتز
} else {
noTone(buzzer); // إيقاف الجرس
}
delay(50); // الانتظار لمدة قصيرة لتحسين الأداء
}