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

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 حول الكود اسمبلي
×
×
  • أضف...