#include <Servo.h>
Servo trapServo; // تعريف السيرفو
const int trigPin = 9;
const int echoPin = 10;
const int ledPin = 13; // تعريف الـLED
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT); // تحديد الـLED كمخرج
trapServo.attach(6); // تحديد المنفذ الذي يتصل به السيرفو
trapServo.write(0); // وضع السيرفو في وضع البداية
Serial.println("🎣 النظام جاهز");
}
void loop() {
long distance = readDistance();
if (distance > 0 && distance < 100) { // تجاهل القيم غير الواقعية
Serial.print("📏 المسافة: ");
Serial.print(distance);
Serial.println(" سم");
if (distance < 15) { // إذا كانت المسافة أقل من 15 سم (حيث تمثل المسافة الجدار أو السمكة)
Serial.println("🐟 تم اكتشاف هدف! - تشغيل الـLED والسيرفو...");
digitalWrite(ledPin, HIGH); // تشغيل الـLED
trapServo.write(90); // تحريك السيرفو
delay(3000); // الانتظار 3 ثوانٍ
trapServo.write(0); // إعادة السيرفو للوضع الأولي
digitalWrite(ledPin, LOW); // إيقاف الـLED
}
}
delay(500); // تأخير بسيط بين القياسات
}
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000); // وقت الانتظار 30ms
if (duration == 0) {
return -1; // خطأ في القراءة
}
return duration * 0.034 / 2; // حساب المسافة
}