اذهب إلى المحتوى

سنتعلم في هذا المقال كيفية بناء مشروع أردوينو للتحكم بألوان الإضاءة، ونتعرف على أفكار جديدة تساعدنا على تطوير مهاراتنا الإلكترونية والبرمجية، حيث سنستخدم عناصر بسيطة مثل ليد إضاءة متعدد الألوان من نوع RGB LED، وثلاثة مقاومات متغيرة Potentiometers، ومفتاح ضغط لحظي Push Button، ونربطها جميعًا مع لوحة الأردوينو.

فكرة مشروع التحكم بألوان الإضاءة باستخدام الأردوينو Arduino

يهدف مشروعنا إلى التحكم في شدة ألوان الإضاءة من خلال مصابيح LED RGB باستخدام لوحة الأردوينو، وهو يعمل وفق ثلاثة أنماط رئيسية:

  • النمط الأول: نضيء الليد بشكل تلقائي وبعدة ألوان مختلفة، ونغير اللون كل فترة زمنية تحدد من خلال مقاومة متغيرة Potentiometer حيث يمكننا تدوير القرص الخاص بها لزيادة أو تقليل الزمن مع الانتباه لأن الزمن لن يتجاوز مجال محدد برمجيًا.
  • النمط الثاني: نولد ألوانًا عشوائية بالضغط على مفتاح الضغط اللحظي Push Button، فعند كل ضغطة على المفتاح تتغير شدة إضاءة اللون الأحمر والأخضر والأزرق عشوائيًا ضمن مجال قيم من 0 إلى 255.
  • النمط الثالث: نحدد شدة إضاءة كل لون من الألوان الأساسية الخاصة بهذا الليد كالأحمر أو الأخضر أو الأزرق من خلال ثلاثة مقاومات متغيرة، وعند تدوير القرص الخاص بكل مقاومة تتغير شدة إضاءة اللون الخاص بهذه المقاومة للحصول على اللون الذي نريده.

العناصر المستخدمة لمشروع التحكم بألوان الإضاءة

سنستخدم في مشروعنا مجموعة من العناصر الإلكترونية والأدوات وهي كالتالي:

  • لوحة أردوينو أونو Arduino Uno
  • كابل البرمجة USB Cable
  • لوحة توصيل التجارب Breadboard
  • مقياس متعدد Multimeter
  • ليد متعدد الألوان RGB LED من نوع CC عدد 1
  • مفتاح الضغط اللحظي Push Button عدد 1
  • مقاومة بقيمة 220 أوم عدد 3
  • مقاومة متغيرة Potentiometer بقيمة 10 كيلو أوم عدد 3
  • مجموعة أسلاك توصيل من نوع Male to Male

وقد تعرفنا على معظم هذه العناصر في المقالات السابقة من السلسلة، ولكن هناك عنصر جديد لم نتعامل معه بعد، وهو الليد متعدد الألوان RGB LED وسنعرفكم عليه في الفقرات التالية.

ما هو الليد متعدد الألوان RGB LED

هو عبارة عن ثلاثة ليدات بالألوان الأساسية الأحمر والأخضر والأزرق مدمجة داخليًا في ليد واحد، نستطيع من خلاله الحصول على أي لون نريده عن طريق دمج هذه الألوان الأساسية. فللحصول على اللون الأزرق باستخدام الليد متعدد الألوان يمكننا تشغيل الليد الأزرق بأقصى شدة إضاءة وإطفاء الليدين الأحمر والأخضر، وللحصول على اللون الأبيض يمكننا تشغيل جميع الليدات بأقصى شدة إضاءة ممكنة، وهكذا نستطيع الحصول على أي لون نريده من خلال تحديد شدة إضاءة كل ليد، وبما أن الليدات تكون قريبة من بعضها بشكل كبير فإن عين الإنسان لن تلاحظ الألوان بشكل منفصل عن بعضها نسبيًا وإنما سترى نتيجة دمج إضاءة الليدات الثلاثة مع بعضها. وكنا قد شرحنا في المقال السابق كيفية التحكم بشدة إضاءة الليد وآلية الحصول على جهد متغير من مصدر جهد ثابت من خلال تقنية تعديل عرض النبضة PWM.

توضح الصورة الآتية طريقة دمج الألوان الرئيسية مع بعضها وكيفية الحصول على ألوان أخرى:

دمج الألوان

أنواع الليد متعدد اللون RGB LED

هناك نوعان من الليدات متعددة الألوان RGB LEDs من حيث البنية وهما:

1. ليد متعددة الألوان بمصاعد مشتركة Common Anodes

في الليد متعددة الألوان ذي المصاعد المشتركة Common Anodes أو ما يعرف اختصارًا بالرمز CA، توصل أقطاب المصاعد لجميع الليدات -أي القطب الموجب لكل ليد- مع بعضها البعض، ونتحكم في زيادة شدة إضاءة كل لون من خلال خفض قيمة الجهد الخاص بكل ليد من خلال المتحكم، أما القطب المشترك فينبغي علينا توصيله مع القطب الموجب 5v.

2. ليد متعددة الألوان بمهابط مشتركة Common Cathodes

في الليد متعددة الألوان ذي المهابط المشتركة Common Cathodes أو ما يعرف اختصارًا بالرمز CC، نوصل أقطاب المهابط لجميع الليدات -أي القطب السالب لكل ليد- ببعضها، ونتحكم في زيادة شدة إضاءة كل لون من خلال رفع قيمة الجهد الخاص بكل ليد من خلال المتحكم، أما القطب المشترك فعلينا توصيله مع القطب السالب GND.

أنواع الليدات

أقطاب الليد متعدد الألوان

سواء كان الليد الذي لديك من نوع CA أو CC ستجد أن له أربعة أقطاب وهي:

  • قطب لليد الأحمر Red LED
  • قطب لليد الأخضر Green LED
  • قطب لليد الأزرق Blue LED
  • قطب مشترك Common

توضح الصورة الآتية أقطاب الليد في حال كان من نوع CA أو CC

أقطاب الليد

كما نلاحظ من الصورة السابقة فالقطب المشترك Common يملك الرجل الأطول دائمًا، ويمكن معرفة نوع الليد الذي لديك باستخدام جهاز القياس المتعدد Multimeter وذلك في وضع فحص الليد وتجريب ما يلي:

  • نوصل القطب المشترك لليد أي أطول رجل مع الطرف الأحمر الموجب للمقياس، ونوصل إحدى الأقطاب الأخرى لليد مع الطرف الأسود السالب للمقياس، في حال إضاءة الليد يكون من نوع مصعد مشترك Common Anode أو CA
  • نوصل القطب المشترك لليد وهي أطول رجل مع الطرف الأسود السالب للمقياس، ونوصل إحدى الأقطاب الأخرى لليد مع الطرف الأحمر الموجب للمقياس، في حال إضاءة الليد يكون من نوع مهبط مشترك Common cathode أو CC

مخطط توصيل مشروع التحكم بألوان الإضاءة

بعد أن تعرفنا بالتفصيل على الليد متعدد الألوان المستخدم في مشروعنا الحالي، دعنا نوضح الخطوات المطلوبة لتوصيل العناصر والأسلاك مع لوحة الأردوينو Arduino وتحقيق فكرة المشروع كما في الصورة التالية:

مخطط توصيل المشروع السابع

  • نصل أقطاب التغذية في لوحة الأردوينو أونو مع لوحة توصيل التجارب BreadBoard، إذ يوصل القطب 5v في لوحة الأردوينو مع المسرى الموجب للوحة التجارب، والقطب GND في لوحة الأردوينو مع المسرى السالب للوحة التجارب من خلال أسلاك التوصيل
  • نصل الرجل الأطول التي تمثل القطب المشترك لليد المتعدد الألوان RGB LED مع المسرى السالب في لوحة توصيل التجارب BreadBoard، حيث أن الليد الذي لدينا من نوع CC
  • نصل الأرجل الخاصة بكل لون الأحمر والأخضر والأزرق من الليد مع الرجل الأولى للمقاومات ذات القيمة 220 أوم الخاصة بكل لون، ونوصل الرجل الأخرى للمقاومات مع الأقطاب 11 و 10 و 9 على الترتيب في لوحة الأردوينو أونو
  • نصل رجل التغذية الأولى Vcc لجميع المقاومات المتغيرة مع بعضها البعض، ومن ثم نوصل رجل التغذية الموجب Vcc لإحدى المقاومات المتغيرة مع المسرى الموجب في لوحة توصيل التجارب BreadBoard
  • نصل رجل التغذية الأخرى Gnd لجميع المقاومات المتغيرة مع بعضها البعض، ومن ثم نوصل رجل التغذية السالبة GND لإحدى المقاومات المتغيرة مع المسرى السالب في لوحة توصيل التجارب BreadBoard
  • نصل رجل إشارة الخرج التشابهي Analog Output والتي تسمى Sig للمقاومة المتغيرة الأولى مع القطب A0 في لوحة الأردوينو أونو
  • نصل رجل إشارة الخرج التشابهي Sig للمقاومة المتغيرة الثانية مع القطب A1 في لوحة الأردوينو أونو
  • نصل رجل إشارة الخرج التشابهي Sig للمقاومة المتغيرة الثالثة مع القطب A2 في لوحة الأردوينو أونو
  • نصل الطرف الأول لمفتاح الضغط اللحظي Push Button مع المسرى السالب للوحة التجارب، ثم نوصل الطرف الثاني للمفتاح Push Button مع القطب رقم 3 في لوحة الأردوينو أونو
  • سنفعّل مقاومة الرفع الداخلية على القطب رقم 3 للمتحكم الموجود في لوحة الأردوينو برمجيًا، لذا لا داعي لتوصيل مقاومة رفع Pull-Up أو مقاومة خفض Pull-Down مع مفتاح الضغط اللحظي Push Button

الكود البرمجي لمشروع التحكم بألوان الإضاءة في أردوينو

سنعرف مجموعة من الماكرو في بداية الكود البرمجي لتحديد أرقام الأقطاب الرقمية لمفتاح الضغط اللحظي Push Button والليد متعدد الألوان RGB LED وأرقام الأقطاب التشابهية للمقاومات المتغيرة الثلاثة، وقد شرحنا كيفية استخدام الماكرو في مقال سابق في هذه السلسلة يمكنك الرجوع إليه من خلال مقال تخمين عدد مرات وميض الليد باستخدام الأردوينو Arduino كما يمكنك الاطلاع أكثر على مفهوم الماكرو وأنواعه من خلال مقال الماكرو Macro والمعالج المسبق Preprocessor في لغة سي C

#define RED_LED 11
#define GREEN_LED 10
#define BLUE_LED 9

#define RED_Pot A0
#define GREEN_Pot A1
#define BLUE_Pot A2

#define BUTTON 3

سنعرف بعد ذلك متغير Mode من نوع عدد صحيح int بقيمة ابتدائية تساوي 1، وظيفة هذا المتغير تحديد نمط عمل المشروع، حيث أن لدينا ثلاثة أنماط كما ذكرنا سابقًا، بالتالي ستكون قيمته إما 1 أو 2 أو 3.

int MODE =  1;

سنضبط نوع الأقطاب في الدالة الرئيسية ()setup من خلال الدالة المدمجة ()pinMode التي تأخذ وسيطين الأول رقم القطب والثاني نوع القطب إما خرج OUTPUT أو دخل INPUT، حيث أن الأقطاب الخاصة بالليد متعدد الألوان هي أقطاب خرج OUTPUT، وسيُضبَط القطب الخاص بالمفتاح كقطب دخل مع تفعيل مقاومة الرفع الداخلية INPUT_PULLUP، أما أقطاب المقاومات المتغيرة ستكون أقطاب دخل INPUT ومن الممكن عدم ضبط نوع أقطاب المقاومات لأن الحالة الافتراضية لجميع الأقطاب في بيئة الأردوينو هي أقطاب دخل INPUT.

void  setup()  {
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
}

بعدها سنعرف دالة باسم ()setColor هدفها عدم تكرار كتابة التعليمات البرمجية الخاصة بتشغيل الليد ثلاث مرات فهناك ثلاثة أقطاب لليد، وإنما سنستخدم هذه الدالة من خلال سطر برمجي واحد، وتأخذ هذه الدالة ثلاثة وسطاء هي قيم شدة إضاءة الألوان الثلاث الأحمر والأخضر والأزرق على الترتيب، سنستدعي داخل هذه الدالة الدالة المدمجة ()analogWrite لتوليد إشارة PWM لكل لون، والتي تأخذ بدورها وسيطين الأول رقم القطب Pin والثاني دورة العمل Duty Cycle وتكون ضمن المجال من 0 وحتى 255.

void setColor(int red, int green, int blue) {
  analogWrite(RED_LED, red);
  analogWrite(GREEN_LED, green);
  analogWrite(BLUE_LED, blue);
}

كما سنُعرّف دالة جديدة باسم ()GET_MODE، مسؤولة عن تحديد نمط عمل الجهاز بناءً على مدة الضغط على المفتاح اللحظي. سنعرّف داخل هذه الدالة، متغيرًا باسم Time من نوع عدد صحيح int بقيمة ابتدائية تساوي صفر.

بعدها سنفحص من خلال الحلقة التكرارية ()while حالة المفتاح فالحلقة تستمر في العمل طالما زمن الضغط أقل من 1 ثانية. فإذا كانت قيمة Time تساوي صفر أي أن المفتاح مضغوط، سنزيد قيمة المتغير Time بمقدار 10. بعد ذلك، سنضيف تأخير زمني قدره 10 مللي ثانية باستخدام الدالة المدمجة ()delay.

إذا استمر الضغط على المفتاح لمدة 1000 مللي ثانية أي عندما تصل قيمة المتغير Time إلى 1000، سيومض الليد باللون الأحمر عدة مرات كمؤشر للمستخدم لتغيير النمط. بعد ذلك سنزيد قيمة متغير النمط Mode بمقدار 1. إذا أصبحت قيمة المتغير Mode أكبر من 3، سنعيد قيمته إلى 1. وأخيرًا، نخرج من الحلقة التكرارية while.

أما إذا كانت قيمة المتغير Time أقل من 1000، فسنستمر في التكرار داخل الحلقة.

void GET_MODE(){
  int Time = 0;
  while(!digitalRead(BUTTON)){
    Time+=10;
    delay(10);
    if(Time == 1000){
      setColor(255, 0, 0);   
      delay(500);
      setColor(0, 0, 0);  
      delay(500);
      setColor(255, 0, 0);  
      delay(500);
      setColor(0, 0, 0); 
      delay(500);

      MODE++;
      if(MODE > 3) MODE = 1;
      break;
    }
  }
}

سنستدعي في بداية الدالة التكرارية ()loop الدالة ()GET_MODE لتحديث قيمة المتغير الخاص بالنمط MODE، ومن ثم نتحقق من قيمة هذا المتغير باستخدام العبارة الشرطية ()if على النحو التالي:

  • في حال قيمة MODE تساوي 1: يعمل المشروع وفق النمط الأول، وفيه نعرّف متغير Delay_Speed من نوع صحيح int لتخزين التأخير الزمني بين إضاءة كل لون والآخر، ونحصل على قيمة التأخير الزمني من خلال قراءة قيمة المقاومة المتغيرة الأولى الموصولة على القطب A0 من خلال الدالة ()analogRead التي تأخذ وسيطًا واحدًا Pin وهو رقم القطب الموصول عليه العنصر التشابهي، وتعيد قيمة عددية صحيحة ضمن المجال من 0 إلى 1023 تمثل القيمة الرقمية المقابلة لقيمة الجهد الموصول على القطب المحدد Pin. بعدها نحول المجال من 0-1023 إلى 100-1500 مللي ثانية من خلال الدالة ()map، وبعد ذلك سنشغّل الليد باستدعاء الدالة ()setColor بعدة ألوان مختلفة.
  • في حال قيمة MODE تساوي 2: يعمل المشروع وفق النمط الثاني، سنتحقق في هذا النمط من حالة المفتاح في حال كان مضغوط سنولد ثلاثة قيم عشوائية ضمن المجال 0-255 باستخدام الدالة ()random التي تأخذ وسيطين الأول أصغر قيمة للرقم، والثاني هو أكبر قيمة للرقم، وتعيد رقم عشوائي من نوع long خاص بقيم الألوان الثلاث الأحمر والأخضر والأزرق، ومن ثم سنشغل الليد باستدعاء الدالة ()setColor مع تمرير القيم السابقة له، وهكذا يضيء الليد بشكل عشوائي في كل مرة يُضغط المفتاح.
  • في حال قيمة MODE تساوي 3:  يعمل المشروع وفق النمط الثالث، وفي هذا النمط سنعرف ثلاثة متغيرات خاصة بتخزين قيم قراءات المقاومات المتغيرة الثلاث، وسنعمل على تحويل الدقة من 10 بت وهي دقة المبدل التناظري إلى رقمي ADC، إلى 8 بت وهي دقة تعديل عرض النبضة PWM. وذلك عن طريق إزاحة القيم بمقدار 2 بت نحو اليمين. ومن ثم تشغيل الليد باستدعاء الدالة الخاصة ()setColor وتمرير المتغيرات الثلاثة التي تحتوي على قيم كل لون.
void loop() {
  GET_MODE();

  if(MODE == 1){
    int Delay_Speed =  map(analogRead(RED_Pot), 0, 1023, 100, 1500);
    setColor(255, 0, 0);   // Red
    delay(Delay_Speed);
    setColor(255, 255, 0); // Yellow
    delay(Delay_Speed);
    setColor(0, 255, 0);   // Green
    delay(Delay_Speed);
    setColor(0, 255, 255); // Cyan
    delay(Delay_Speed);
    setColor(0, 0, 255);   //Blue 
    delay(Delay_Speed);
    setColor(255, 0, 255); //Magenta
    delay(Delay_Speed);
  }

  else if(MODE == 2){
     if (!digitalRead(BUTTON)){
      int Red = random(0, 255);
      int green = random(0, 255);
      int blue = random(0, 255);
      setColor(Red, green, blue);   
    }
  }

  else if(MODE == 3){
    int RED_POT_VAL = analogRead(RED_Pot) >> 2;
    int GREEN_POT_VAL = analogRead(GREEN_Pot) >> 2;
    int BLUE_POT_VAL = analogRead(BLUE_Pot) >> 2;
    setColor(RED_POT_VAL, GREEN_POT_VAL, BLUE_POT_VAL);
  }
}

الكود البرمجي النهائي للمشروع

فيما يلي الكود الكامل لمشروع التحكم بألوان الإضاءة باستخدام الأردوينو Arduino:

#define RED_LED 11
#define GREEN_LED 10
#define BLUE_LED 9

#define RED_Pot A0 
#define GREEN_Pot A1 
#define BLUE_Pot A2

#define BUTTON 3

int MODE = 1;

void setup() {
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  GET_MODE();

  if(MODE == 1){
    int Delay_Speed =  map(analogRead(RED_Pot), 0, 1023, 100, 1500);

    setColor(255, 0, 0);   // Red
    delay(Delay_Speed);

    setColor(255, 255, 0); // Yellow
    delay(Delay_Speed);

    setColor(0, 255, 0);   // Green
    delay(Delay_Speed);

    setColor(0, 255, 255); // Cyan
    delay(Delay_Speed);

    setColor(0, 0, 255);   //Blue 
    delay(Delay_Speed);

    setColor(255, 0, 255); //Magenta
    delay(Delay_Speed);
  }

  else if(MODE == 2){
     if (!digitalRead(BUTTON)){
      int Red = random(0, 255);
      int green = random(0, 255);
      int blue = random(0, 255);
      setColor(Red, green, blue);   
    }
  }

  else if(MODE == 3){
    int RED_POT_VAL = analogRead(RED_Pot) >> 2;
    int GREEN_POT_VAL = analogRead(GREEN_Pot) >> 2;
    int BLUE_POT_VAL = analogRead(BLUE_Pot) >> 2;
    setColor(RED_POT_VAL, GREEN_POT_VAL, BLUE_POT_VAL);
  }

}

void setColor(int red, int green, int blue) {
  analogWrite(RED_LED, red);
  analogWrite(GREEN_LED, green);
  analogWrite(BLUE_LED, blue);
}


void GET_MODE(){
  int Time = 0;
  while(!digitalRead(BUTTON)){
    Time+=10;
    delay(10);
    if(Time == 1000){
      setColor(255, 0, 0);   
      delay(500);
      setColor(0, 0, 0);  
      delay(500);
      setColor(255, 0, 0);  
      delay(500);
      setColor(0, 0, 0); 
      delay(500);

      MODE++;
      if(MODE > 3) MODE = 1;
      break;
    }
  }
}

محاكاة مشروع التحكم بألوان الإضاءة بالأردوينو

سنتبع نفس الخطوات التي تعلمناها في مقال التحكم بتشغيل وإطفاء ليد LED باستخدام الأردوينو Arduino للوصول الى الصفحة الخاصة بمحاكاة مشروعنا على موقع وكوي Wokwi:

الصفحة الخاصة بمحاكاة المشروع

نضيف العناصر الإلكترونية اللازمة للمشروع وهي المقاومة المتغيرة Potentiometer، والليد متعدد الألوان RGB LED، ولوحة التجارب BreadBoard، وزر الضغط Push Button، والمقاومات Resistors.

إضافة العناصر في موقع وكوي

نغيّر قيم مقاومات الليد إلى 220 أوم من خلال الضغط عليها فتظهر لنا نافذة في الأعلى تمكننا من تغير القيمة والواحدة.

تغيير قيمة المقاومة

يمكن بالطريقة نفسها تغيير نوع الليد Anode أو Cathode من خلال الضغط عليه فتظهر نافذة بالأعلى نستطيع من خلالها تحديد النوع.

تغير نوع الليد

نرتب العناصر على لوحة التجارب بالشكل الذي نراه مناسبًا، ثم نصل العناصر بعضها ببعض حسب مخطط التوصيل الذي عرضناه سابقًا.

نكتب الكود البرمجي في الجزء الخاص به ثم نشغل المحاكاة، ونلاحظ الحالات الآتية:

  1. في البداية سيضيء الليد بعدة ألوان مختلفة بشكل متكرر كل فترة معينة، ندور القرص الخاص بالمقاومة المتغيرة الأولى الموصولة على القطب A0 نحو اليمين سنلاحظ عندها أن فترة الإنتقال من لون إلى آخر أصبحت أبطأ، وفي حال تدوير القرص نحو اليسار سنلاحظ أن فترة الانتقال من لون لآخر أصبحت أسرع
  2. نضغط على المفتاح بشكل مستمر لمدة 1 ثانية ولاحظ أن الليد يومض باللون الأحمر عدة مرات وهذا يدل على الانتقال من النمط الأول إلى النمط الثاني، سيضئ عندها الليد بلون عشوائي، وعند الضغط اللحظي في كل مرة على المفتاح سيتغير اللون بشكل عشوائي
  3. نضغط على المفتاح بشكل مستمر مرة أخرة حتى يومض الليد باللون الأحمر عدة مرات للانتقال من النمط الثاني إلى النمط الثالث، ثم ندور أقراص المقاومات المتغيرات الثلاث نحو أقصى اليسار لإطفاء الليد، ومن ثم ندور القرص الخاص بالمقاومة المتغيرة الأولى نحو اليمين سيضيء الليد عندها باللون الأحمر، وبتدوير القرص الخاص بالمقاومة المتغيرة الثانية نحو اليمين أيضًا بشكل تدريجي سيُدمج اللون الأخضر مع اللون الأحمر بحسب دوران القرص، وبنفس الطريقة نستطيع تدوير القرص الخاص بالمقاومة المتغيرة الثالثة لإضافة اللون الأزرق والحصول على أي لون نريده
  4. عند الضغط على المفتاح بشكل مستمر مرة أخرى سيعود الجهاز إلى النمط الأول

النتيجة النهائية لمحاكاة المشروع السابع

الخلاصة

وصلنا لنهاية مقالنا الذي شرحنا فيه خطوات بناء مشروع للتحكم بألوان الإضاءة باستخدام أردوينو Arduino، واستعرضنا كيفية توصيل العناصر المطلوبة، بما في ذلك لوحة الأردوينو والليد والمقاومات والمفتاح اللحظي،وكتبنا الكود البرمجي اللازم لتحقيق منطق المشروع، وأخيرًا نفذنا مشروعنا من خلال محاكاته على منصة وكوي Wokwi وجربنا الحالات المختلفة لاختباره.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...