// استخدام لوحة الأردوينو لتوصيل حساس الموجات فوق الصوتية ومحرك سيرفو
// ليتحرك المحرك بناءً على المسافة المقاسة بواسطة الحساس
// إعداد المهندس/ أحمد درويش
#include <Servo.h> // تضمين مكتبة التحكم في محرك السيرفو
// تعريف المتغيرات
// إنشاء متغير للتعامل مع السيرفو موتور
Servo servo_3;
// تعريف دالة قياس المسافة باستخدام الحساس
// تقوم الدالة بإرسال إشارة من الحساس واستقبالها وحساب الوقت
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() {
// توصيل محرك السيرفو على الطرف الرقمي 3 وتحديد عرض النبضة
servo_3.attach(3);
}
// الحلقة الرئيسية: تعمل بشكل مستمر
void loop() {
// قراءة المسافة باستخدام حساس الموجات فوق الصوتية
// حساب المسافة بوحدة السنتيمتر
float distance = 0.01723 * readUltrasonicDistance(A4, A5);
// تحريك السيرفو بناءً على المسافة المقاسة
if (distance < 100) { // إذا كانت المسافة أقل من 100 سم
servo_3.write(180); // تحريك السيرفو إلى زاوية 180 درجة
} else {
servo_3.write(0); // تحريك السيرفو إلى زاوية 0 درجة
}
delay(10); // الانتظار لمدة قصيرة لتحسين الأداء
}