#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#define PIN_LED 6
#define NUM_LEDS 16
Adafruit_NeoPixel strip(NUM_LEDS, PIN_LED, NEO_GRB + NEO_KHZ800);
Servo gate;
void setup() {
strip.begin();
gate.attach(11);
pinMode(9, OUTPUT); // Trig
pinMode(10, INPUT); // Echo
gate.write(0); // البوابة مقفولة في البداية
}
void loop() {
// معادلة المسافة الميكانيكية
digitalWrite(9, LOW); delayMicroseconds(2);
digitalWrite(9, HIGH); delayMicroseconds(10);
digitalWrite(9, LOW);
long duration = pulseIn(10, HIGH);
int distance = duration * 0.034 / 2;
if (distance < 20) { // لو العربية قربت (أقل من 20 سم في المحاكي)
gate.write(90); // افتح البوابة (حسابات العزم والزاوية)
fillColor(strip.Color(0, 255, 0)); // نور أخضر (مرشد إضاءة ذكي)
} else {
gate.write(0); // اقفل البوابة
fillColor(strip.Color(255, 0, 0)); // نور أحمر (حالة الاستعداد)
}
}
void fillColor(uint32_t color) {
for(int i=0; i<NUM_LEDS; i++) {
strip.setPixelColor(i, color);
}
strip.show();
}