مشروع إشارات مرور باستخدام اكتب تعليقُا

 تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

مقدمـــــــــة عن المشروع

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

في هذا المشروع نتناول كيفية بناء أشارة مرور واحدة  , وبناءا عليها تستطيع أيه المبرمج أن تطبق الفكرة على أربعة اشارات مرورية . فدعنا نبدأ الان ……

متطلبات المشروع

منتجات المشروع

بامكانك شراء كل منتج على حدى من المتجر بالضغط على المنتج المطلوب
او شراء منتجات المشروع بالكامل ادناه

شراء منتجات المشروع بالكامل

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

طريقة العمل والتوصيل

للتوصيل أتبع نفس طريقة التوصيل الموضحة بالاسفل في الصورة .

فكرة العمل مطابقة للواقع تماما حيث تضيئ الاشارة الحمراء وبعد زمن يعقبها الضوء الاخضر  , وقبل الانتقال للاحمر يضيئ الاصفر .

يمكنك التحكم في زمن أضاءة أي اشارة بالتلاعب في التأخير الزمني فقط .

FLD3F5TJQMOF0TM.LARGE

الكـــــــــود البرمجي

لتحميل الكود البرمجي اضغط هنا
/*MYBOTIC TRAFFIC LIGHT PEDESTRIAN CONTROL*/

#define RED_SET_TIME 5000
#define YELLOW_SET_TIME 2000
#define GREEN_SET_TIME 5000

#define LIGHT_1_RED 2
#define LIGHT_1_YELLOW 3
#define LIGHT_1_GREEN 4

#define GREEN_LIGHT 0
#define YELLOW_LIGHT 1
#define RED_LIGHT 2

unsigned long gulStart_Timer = 0;

unsigned short gusSet_Time[3] = {GREEN_SET_TIME, YELLOW_SET_TIME, RED_SET_TIME};

short gsWhich_Light_Index = GREEN_LIGHT;

void setup() 
{
  Serial.begin(9600);
  pinMode(LIGHT_1_RED, OUTPUT);
  pinMode(LIGHT_1_YELLOW, OUTPUT);
  pinMode(LIGHT_1_GREEN, OUTPUT);

  digitalWrite(LIGHT_1_GREEN, HIGH);
  digitalWrite(LIGHT_1_YELLOW, LOW);
  digitalWrite(LIGHT_1_RED, LOW);  
  gulStart_Timer = millis();
}

// the loop function runs over and over again forever
void loop() 
{

  if((millis()-gulStart_Timer) >= gusSet_Time[gsWhich_Light_Index])
  {
    gsWhich_Light_Index++;

    if(gsWhich_Light_Index > RED_LIGHT)
    {
      gsWhich_Light_Index = GREEN_LIGHT;
    }
    
    gulStart_Timer = millis();

    if(gsWhich_Light_Index == GREEN_LIGHT)
    {
      digitalWrite(LIGHT_1_GREEN, HIGH);
      digitalWrite(LIGHT_1_YELLOW, LOW);
      digitalWrite(LIGHT_1_RED, LOW);      
    }
    else if(gsWhich_Light_Index == YELLOW_LIGHT)
    {
      digitalWrite(LIGHT_1_GREEN, LOW);
      digitalWrite(LIGHT_1_YELLOW, HIGH);
      digitalWrite(LIGHT_1_RED, LOW);      
    }
    else if(gsWhich_Light_Index == RED_LIGHT)
    {
      digitalWrite(LIGHT_1_GREEN, LOW);
      digitalWrite(LIGHT_1_YELLOW, LOW);
      digitalWrite(LIGHT_1_RED, HIGH);      
    }
  }
}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *