#include <Arduino.h>
#include <Servo.h>
// הגדרות פינים
const int trigPin = PA1;
const int echoPin = PA2;
const int ledGreen = PA5;
const int ledRed = PA6;
const int servoPin = PA0;
Servo myGate; // יצירת אובייקט למנוע
void setup() {
Serial.begin(115200);
myGate.attach(servoPin);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
// מצב התחלתי: מחסום סגור (0 מעלות) ונורה אדומה דולקת
myGate.write(0);
digitalWrite(ledRed, HIGH);
digitalWrite(ledGreen, LOW);
}
void loop() {
// מדידת מרחק
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
// לוגיקת המחסום
if (distance > 0 && distance < 20) { // אם רכב התקרב לפחות מ-20 ס"מ
Serial.println("Access Granted. Opening Gate...");
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH); // אור ירוק
myGate.write(90); // פתיחת מחסום ל-90 מעלות
delay(5000); // מחכה 5 שניות שהרכב יעבור
Serial.println("Closing Gate...");
myGate.write(0); // סגירת מחסום
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH); // חזרה לאור אדום
}
delay(200); // בדיקה חוזרת כל 0.2 שניות
}