تصميم روبوت متتبع الخط باستخدام الاردوينو اكتب تعليقُا

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

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

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

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

  • Chassis (including motors and wheels )
  • Arduino Uno r3
  • L293D Motor Shield
  • IR Proximity Sensors (pair)
  • Jumper Wires
  • Switch
  • 4AA Battery Holder

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

FE6QNU5JFUAIRAK.LARGE

الآن ، قم بإجراء التوصيلات حسب المخطط أعلاه …

 

Left Sensor>>Arduino:-

  • Vcc>>5v
  • Gnd>>Gnd
  • Out>>A4

Right Sensor>>Arduino:-

  • Vcc>>5v
  • Gnd>>Gnd
  • Out>>A5

قم بتوصيل المحركات بدرع المحرك وقم بتوصيل درع المحرك بلوحة الاردوينو . قم بتوصيل حامل البطارية بالدرع من خلال مفتاح . هذا كل شيء للتوصيلات ، دعنا ننتقل إلى الخطوة التالية …

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

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

لتحميل الكود البرمجي اضغط هنا
//including the libraries
#include <AFMotor.h>

//defining pins and variables
#define lefts A4 
#define rights A5 

//defining motors
AF_DCMotor motor1(4, MOTOR12_8KHZ); 
AF_DCMotor motor2(3, MOTOR12_8KHZ);
/*
AF_DCMotor motor1(3, MOTOR12_8KHZ); 
AF_DCMotor motor2(4, MOTOR12_8KHZ);
 */

void setup() {
  //setting the speed of motors
  motor1.setSpeed(200);
  motor2.setSpeed(200);
  //declaring pin types
  pinMode(lefts,INPUT);
  pinMode(rights,INPUT);
  //begin serial communication
  Serial.begin(9600);
  
}

void loop(){
  //printing values of the sensors to the serial monitor
  Serial.println(analogRead(lefts));
  Serial.println(analogRead(rights));
  //line detected by both
  if(analogRead(lefts)<=400 && analogRead(rights)<=400){
    //stop
    motor1.run(RELEASE);
    motor2.run(RELEASE);
  }
  //line detected by left sensor
  else if(analogRead(lefts)<=400 && !analogRead(rights)<=400){
    //turn left
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    /*
    motor1.run(RELEASE);
    motor2.run(FORWARD);
     */
  }
  //line detected by right sensor
  else if(!analogRead(lefts)<=400 && analogRead(rights)<=400){
    //turn right
    motor1.run(FORWARD);
    motor2.run(BACKWARD);
    /*
    motor1.run(FORWARD);
    motor2.run(RELEASE);
     */
  }
  //line detected by none
  else if(!analogRead(lefts)<=400 && !analogRead(rights)<=400){
    //stop
    motor1.run(FORWARD);
    motor2.run(FORWARD);
    /*
    motor1.run(BACKWARD);
    motor2.run(BACKWARD);
     */
  }
  
}

اترك تعليقاً

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