// تعريف أرجل توصيل الـ LEDs
const int red1 = 4; // الليد الأحمر الأول
const int yellow1 = 3; // الليد الأصفر الأول
const int green1 = 2; // الليد الأخضر الأول
const int red2 = 10; // الليد الأحمر الثاني
const int yellow2 = 9; // الليد الأصفر الثاني
const int green2 = 8; // الليد الأخضر الثاني
void setup() {
// ضبط جميع الأرجل كمخارج
pinMode(red1, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(green2, OUTPUT);
}
void loop() {
// الحالة 1: الطريق الأول أخضر، والطريق الثاني أحمر
digitalWrite(green1, HIGH);
digitalWrite(red2, HIGH);
delay(4000); // إبقاء الإشارة خضراء لمدة 4 ثوانٍ
// وميض الضوء الأخضر قبل الانتقال إلى الأصفر
for (int i = 0; i < 3; i++) {
digitalWrite(green1, LOW);
delay(300);
digitalWrite(green1, HIGH);
delay(300);
}
// تشغيل الأصفر للتحذير
digitalWrite(green1, LOW);
digitalWrite(yellow1, HIGH);
delay(2000);
// الحالة 3: التبديل إلى الطريق الآخر
digitalWrite(yellow1, LOW);
digitalWrite(red1, HIGH);
digitalWrite(red2, LOW);
digitalWrite(green2, HIGH);
delay(4000);
// وميض الضوء الأخضر قبل الانتقال إلى الأصفر
for (int i = 0; i < 3; i++) {
digitalWrite(green2, LOW);
delay(300);
digitalWrite(green2, HIGH);
delay(300);
}
// تشغيل الأصفر للتحذير
digitalWrite(green2, LOW);
digitalWrite(yellow2, HIGH);
delay(2000);
// إعادة الدورة من البداية
digitalWrite(yellow2, LOW);
digitalWrite(red2, HIGH);
digitalWrite(red1, LOW);
}