#include <Servo.h>
// تعريف المنافذ
const int trigPin = 2;
const int echoPin = 3;
const int buzzerPin = 4;
const int ledGreenPin = 8; // الدبوس المتصل بـ LED الأخضر
const int ledRedPin = 9; // الدبوس المتصل بـ LED الأحمر
// تحديد مدى الأمان
const long safeDistance = 8; // بالسنتمترات
Servo myServo;
int servoPos = 0; //servo position in degrees
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledGreenPin, OUTPUT);
pinMode(ledRedPin, OUTPUT);
Serial.begin(9600);
myServo.attach(10);
myServo.write(0);//0 degrees is closed
}
void loop() {
// قياس المسافة
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (0.034*duration)/2;
Serial.println(“Hello pupils!”);
// السماح بالمرور
if (distance < safeDistance) {
Serial.println(“Enter Please!”);
digitalWrite(buzzerPin, HIGH);
delay(250);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledGreenPin, HIGH);
digitalWrite(ledRedPin, LOW);
myServo.write(90);
delay(1500);
myServo.write(0);
// الانتظار وعدم السماح بالمرور
Serial.println(“Wait Please!”);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledGreenPin, LOW);
digitalWrite(ledRedPin, HIGH);
delay(1000);
} else {// عدم السماح بالمرور
Serial.println(“Hello pupils!”);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledGreenPin, LOW);
digitalWrite(ledRedPin, HIGH);
myServo.write(0);
}
delay(500);
}