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

Ahmed Sallam12

الأعضاء
  • المساهمات

    1
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Ahmed Sallam12

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

    ```c
    // تعليق: روبوت تتبع الإنسان باستخدام Arduino
    // تعليق: تم إنشاء الكود بواسطة DIY Builder
    // تعليق: يجب تثبيت مكتبات AFMotor و NewPing قبل تحميل الشيفرة
    // تعليق: يمكن العثور على جميع المكتبات الضرورية من مدير مكتبات Arduino.
    // تعليق: تواصل معي على Instagram لأي استفسار (Insta Id: diy.builder)
    // تعليق: تم التعديل في 7 مارس 2022
    // تعليق: الإصدار 1.1

    // تضمين شيفرة المكتبة:
    #include <NewPing.h>
    #include <Servo.h>
    #include <AFMotor.h>

    // تعريف توصيلات الأقراص والمحركات:
    #define RIGHT A2              // مستشعر الأشعة تحت الحمراء الأيمن متصل بالمدخل التناظري A2 في Arduino Uno:
    #define LEFT A3               // مستشعر الأشعة تحت الحمراء الأيسر متصل بالمدخل التناظري A3 في Arduino Uno:
    #define TRIGGER_PIN A1        // دبوس الإرسال متصل بالمدخل التناظري A1 في Arduino Uno:
    #define ECHO_PIN A0           // دبوس الاستقبال متصل بالمدخل التناظري A0 في Arduino Uno:
    #define MAX_DISTANCE 200      // المسافة القصوى لقياس المسافة:

    // متغيرات لتخزين قراءات المستشعرات:
    unsigned int distance = 0;    // متغير لتخزين مسافة مستشعر الموجات فوق الصوت:
    unsigned int Right_Value = 0; // متغير لتخزين قراءة مستشعر الأشعة تحت الحمراء الأيمن:
    unsigned int Left_Value = 0;  // متغير لتخزين قراءة مستشعر الأشعة تحت الحمراء الأيسر:

    // إعداد NewPing مع تعريف الدبابات والمحركات:
    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

    // إنشاء كائنات المحركات:
    AF_DCMotor Motor1(1, MOTOR12_1KHZ);
    AF_DCMotor Motor2(2, MOTOR12_1KHZ);
    AF_DCMotor Motor3(3, MOTOR34_1KHZ);
    AF_DCMotor Motor4(4, MOTOR34_1KHZ);

    // إنشاء كائن سيرفو للتحكم في المحرك:
    Servo myservo;
    int pos = 0;  // متغير لتخزين وضعية المحرك:

    void setup() {
      // تهيئة التواصل التسلسلي:
      Serial.begin(9600);

      // توصيل المحرك السيرفو بالدبوس 10 في Arduino UNO:
      myservo.attach(10);

      // دورة لتحريك المحرك السيرفو إلى وضعية ابتدائية:
      for (pos = 90; pos <= 180; pos += 1) {
        myservo.write(pos);
        delay(15);
      }
      for (pos = 180; pos >= 0; pos -= 1) {
        myservo.write(pos);
        delay(15);
      }
      for (pos = 0; pos <= 90; pos += 1) {
        myservo.write(pos);
        delay(15);
      }

      // تعيين وضع الدبابات كإدخال:
      pinMode(RIGHT, INPUT);
      pinMode(LEFT, INPUT);
    }

    void loop() {
      // انتظار 50 مللي ثانية بين القياسات:
      delay(50);

      // قياس المسافة باستخدام مستشعر الموجات فوق الصوت:
      distance = sonar.ping_cm();

      // طباعة المسافة في منفذ التسلسل:
      Serial.print("distance");
      Serial.println(distance);

      // قراءة قيم أقراص الأشعة تحت الحمراء وطباعتها:
      Right_Value = digitalRead(RIGHT);
      Left_Value = digitalRead(LEFT);

      Serial.print("RIGHT");
      Serial.println(Right_Value);

      Serial.print("LEFT");
      Serial.println(Left_Value);

      // فحص ما إذا كانت قيمة مستشعر الموجات فوق الصوت في النطاق من 1 إلى 15:
      if ((distance > 1) && (distance < 15)) {
        // التحرك إلى الأمام:
        Motor1.setSpeed(130);
        Motor1.run(FORWARD);
        Motor2.setSpeed(130);
        Motor2.run(FORWARD);
        Motor3.setSpeed(130);
        Motor3.run(FORWARD);
        Motor4.setSpeed(130);
        Motor4.run(FORWARD);
      } else if ((Right_Value == 0) && (Left_Value == 1)) {
        // الدوران لليسار:
        Motor1.setSpeed(150);
        Motor1.run(FORWARD);
        Motor2.setSpeed(150);
        Motor2.run(FORWARD);
        Motor3.setSpeed(150);
        Motor3.run(BACKWARD);
        Motor4.setSpeed(150);
        Motor4.run

    حول الكود اسمبلي

×
×
  • أضف...